问题标签 [spring-cloud-kubernetes]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
spring-cloud - 使用 spring-cloud-kubernetes 配置映射依赖项存在的 spring 应用程序启动异常
我有一些 Spring 服务,它们同时具有 Eureka-client 和 spring-cloud-starter-kubernetes-fabric8-all 依赖项。默认情况下,Eureka 处于启用状态,Kubernetes 处于禁用状态。
当我启动应用程序时,我收到以下异常作为警告,即使 kubernetes 已被禁用。跑步 -docker run --rm dhananjay12/demo-service-one:latest
如果我将相同的属性放在 env 变量中,则不存在异常。跑步 -docker run --rm -e spring.cloud.kubernetes.config.enable-api=false dhananjay12/demo-service-one:latest
虽然应用程序确实启动并且其余的东西都可以工作,但有人可以建议,为什么首先会出现这个异常?
代码 - https://github.com/dhananjay12/spring-microservice-demo/blob/master/service-one/src/main/resources/application.yml
Spring boot - 2.4.5
, Spring cloud -2020.0.2
java - Spring Cloud ZUUL 不代理对新添加的 kubernetes 服务的调用
我们已经使用 Spring Cloud 堆栈构建了一组微服务,我在开发时使用 Eureka 服务作为服务发现,但在将其移动到 Kubenretes 时,我们有两个选择
- 继续使用 Eureka 作为发现服务
- 开始使用原生 Kubernetes 服务
因此,我们选择了#2,因为使用 Kubernetes 原生服务比使用另一层重定向更有意义。
我们使用 Spring Cloud Zuul 作为 API Gatway 启用@DiscoveryClient
以获取部署在命名空间中的服务,以便 Zuul 可以代理对底层服务的调用,设置工作良好,直到我们向命名空间添加新服务,API 网关无法找出新的添加的服务因此无法代理调用它,但是,如果重新启动 API 网关,那么它会发现添加的服务,所以它似乎无法即时解析新添加的服务,是否有配置或 jar我的设置中缺少
这是我的 API 网关 pom.xml
我的 API Gateway 配置如下所示:-
spring-boot - Spring Cloud Kubernetes / Spring Boot 1.5 支持
我仍在运行 Spring Boot 1.5 应用程序(我知道,我知道)。我正在使用 Spring Cloud Edgware,因为这是使用 Spring Boot 1.5 构建的最新 Cloud 版本。我目前正在使用 Spring Cloud Zookeeper 进行配置和服务发现。我想切换到使用 Kubernetes 进行服务发现,因为我在 Kubernetes 集群中运行以进行部署。
我的问题是,我是否需要将所有应用程序升级到 Spring Boot 2 和更高版本的 Spring Cloud 才能使用 Spring Cloud Kubernetes?我看到 Spring Cloud Kuberenetes 1.0.0 可用于 Spring Cloud Greenwich。但它可以拉进去单独使用吗?
java - Spring Cloud 负载均衡器和 Ribbon 有什么区别?
我们的团队正计划从
- Spring Cloud Netflix Ribbon 到 Spring Cloud LoadBalancer 并使用 spring-cloud-kubernetes 作为发现客户端。
- 使用 Spring Cloud Gateway 代替 Zuul
- 和 Resilience4j 而不是 Hystrix。
需要进行哪些更改,我们是否需要更改等效属性。你能帮我们从哪里开始吗?
spring-cloud-dataflow - Spring Cloud 数据流:错误 org.springframework.dao.InvalidDataAccessResourceUsageException
我正在尝试运行/配置 Spring Data Cloud Data Flow (SCDF) 来安排 Spring Batch Job 的任务。
我在连接到本地 postgresql(localhost:5432)的 minikube 中运行。minikube 在虚拟机中运行,我通过 --cidr 分配了一个 vnet,因此 minikube 可以连接到本地 postgres。
这是 postgresql 服务 yaml: https ://github.com/msuzuki23/SpringCloudDataFlowDemo/blob/main/postgres-service.yaml
这是 SCDF 配置 yaml: https ://github.com/msuzuki23/SpringCloudDataFlowDemo/blob/main/server-config.yaml
这是 SCDF 部署 yaml: https ://github.com/msuzuki23/SpringCloudDataFlowDemo/blob/main/server-deployment.yaml
这是 SCDF server-svc.yaml: https ://github.com/msuzuki23/SpringCloudDataFlowDemo/blob/main/server-svc.yaml
要在 minikube 中启动 SCDF 服务器,我执行以下 kubectl 命令:
我没有运行 Prometeus、Grafana、Kafka/Rabbitmq,因为我想测试并确保我可以从 SCDF 启动 Spring Batch Job。我没有运行船长部署(Spring Cloud DataFlow 服务器在本地运行,指向 Kubernetes 中的船长),如果只是运行任务,则没有必要。
这是我在尝试从 docker 私有仓库添加应用程序时遇到的错误:
这是来自 pod 的完整错误堆栈: https ://github.com/msuzuki23/SpringCloudDataFlowDemo/blob/main/SCDF_Log_Error
错误堆栈的亮点:
Postges休眠错误:
前几个错误来自 SCDF 试图连接到船长,因为它没有配置,这是预期的。
第二个错误是 Postgres JDBC Hibernate。我该如何解决?将 SCDF 设置为指向本地 postgres 时是否缺少配置?
此外,在我的 docker jar 中,我没有添加任何注释,例如 @EnableTask。
任何帮助表示赞赏,谢谢!马库斯。
java - 带有 HTTP2 码头客户端的 Spring Cloud kubernetes 负载均衡器升级问题
我们有一个带有 HTTP2 码头客户端的 Spring Boot 应用程序,我们使用 @LoadBalanced 注释了 springboot 版本 2.3.x 和 spring-cloud-kubernetes-loadbalancer 版本 1.1.6.RELEASE。在发送流量时,正确创建了 HTTP2 持久连接。在扩展服务器时,它会平等地分配连接以及这些连接上的流量。
工作依赖如下:
后来将 spring boot 版本升级到 2.4.x 并相应地迁移到 spring-cloud-starter-kubernetes-fabric8-loadbalancer 2.0.3 (因为根据 Release train Spring Boot compatible ,这是与 springboot 2.4.x 兼容的正确版本) ,我们没有看到与横向扩展服务器的 HTTP2 连接数量相等。
不工作的依赖项如下:
这里可能存在什么问题?
编辑:java 版本“15”2020-09-15 Java(TM) SE Runtime Environment (build 15+36-1562) Java HotSpot(TM) 64-Bit Server VM (build 15+36-1562,混合模式,共享)
码头客户端版本是
这两个对于工作和非工作情况都很常见
spring-boot - Spring Cloud Kubernetes Configuration Watcher,通知接收者不基于秘密名称
我最近在 spring-cloud-kubernetes 项目中听说过Spring Cloud Kubernetes Configuration Watcher 。据我了解,它允许公开执行器/刷新端点的 Spring Boot 应用程序收到对 ConfigMap 或 Secret 的更改的通知,并在运行时相应地更新 - 无需重新启动应用程序 - 这听起来很棒。但是文档提到:
Configuration Watcher 将获取 ConfigMap 或 Secret 的名称,并使用该名称向应用程序发送通知
我想知道,有没有办法将通知发送到名称与 Secret 不同的应用程序?例如,如果我有一个名为 auth-server-secret 的 Secret 由多个不同名称的微服务共享,我如何让 Spring Cloud Kubernetes Configuration Watcher 通知它们?如果可以基于标签或注释发送通知,那就太好了。那可能吗?还是我误解了机制?
任何建议将不胜感激
java - 在 spring-boot 中使用作为文件挂载的多个 kubernetes 机密
我正在使用 spring-cloud-starter-kubernetes-client-config 库在我的应用程序中使用 kubernetes 机密。我有一个从秘密映射属性的 Pojo:
在我的场景中,我将 2 个秘密安装为卷并像这样引导:
我的问题是如何区分这两个秘密并在应用程序中使用它们?最终,我希望有 2 个ServiceConfiguration
类实例s1
,一个用于s2
. 使用自动装配时的当前设置,ServiceConfiguration
它仅解析s2
内容。
spring-cloud-kubernetes - 跨多个命名空间的 Spring Cloud Kubernetes 和 ConfigMaps
阅读Spring Cloud Kubernetes 文档后,似乎 Spring Cloud Kubernetes 支持跨多个命名空间从 ConfigMap 加载属性。以下是文档中的示例:
但是,根据Kubernetes 文档,“Pod 和 ConfigMap 必须在同一个命名空间中”。
那么,Spring Cloud Kubernetes 是否支持跨多个命名空间从 ConfigMaps 加载属性,如果支持,允许这样做的正确配置是什么?
我在与 Spring Boot pod 相同的命名空间中从 ConfigMaps 加载属性没有问题,但是当我尝试在不同的命名空间(在本例中为common
)中加载源自 ConfigMap 的属性时,遇到以下异常:
总而言之,我试图确定在 Kubernetes 世界中,如何设置类似于 Spring Cloud Config 目前在我们的 Docker Swarm 环境中为我提供的设置,我们正在使用由 Spring Cloud Eureka、Spring Cloud Config 和春天云网关。例如,今天我拥有与我的 Git 存储库中的所有可用微服务application.yml
和文件相关的通用属性。application-profile.yml
我的想法是,这些属性将在 Kubernetes 中作为common
命名空间中的 ConfigMap 提供,而我xyz-microservice.yml
今天由 Spring Cloud Config 加载并与application.yml
和属性结合的application-profile.yml
属性将在其自己的命名空间中。
kubernetes - Spring Cloud Kubernetes 与 Kubernetes API 客户端
我想运行一个 restapi 服务器,一个 spring boot 应用程序,以启动同一个 kubernetes 集群内的其他 docker 容器。我找到了这两个包:Spring Cloud Kubernetes 和 Kubernetes API Client。我对两者之间的区别以及我应该使用哪一个感到困惑。