首页 > 解决方案 > Kubernetes集群中的SpringBoot服务如何知道计数器服务地址变化?

问题描述

我在 Kubernetes 集群中有一堆应用程序,它们相互连接,例如 SpringBoot 应用程序连接到 RabbitMQ。它们都在容器中。

通常独立的 SpringBoot 应用程序从 application.yaml/bootstrap.yaml 读取配置,但 AFAIK 在 Kubernetes 集群的情况下它从 ConfigMap 读取它,并且计数器服务的地址应该存储在那里(是吗?)

所以问题是:如果 RabbitMQ pod 重新部署(例如失败并重新启动),如何触发 SpringBoot 以重新读取新配置?谁触发它?什么时候?

标签: spring-bootkubernetesconfigmap

解决方案


Spring Cloud kubernetes具有proertysource reload功能,并且能够在相关的 ConfigMap 或 Secret 更改时触发应用程序重新加载。因此,如果 rabbitmq 端点发生变化,您可以更新 configMap,应用程序将自动重新加载并获取新配置。但在实际生产场景中,您将拥有一个通过 kubernetes服务公开的 rabbitmq 的稳定端点。即使 pod IP 可能会更改服务 IP 或 DNS 将保持不变。

rabbitmq 应该部署为StatefulSet提供表,唯一的网络标识符。


推荐阅读