【问题标题】:How a SpringBoot service in Kubernetes cluster knows about counter services address changing?Kubernetes集群中的SpringBoot服务如何知道计数器服务地址变化?
【发布时间】:2020-04-16 19:38:20
【问题描述】:

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

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

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

【问题讨论】:

    标签: spring-boot kubernetes configmap


    【解决方案1】:

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

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

    【讨论】:

    • 非常感谢。那么,为什么您认为 propertysource 重新加载功能不适用于 prod 场景?是因为无论如何 Kubernetes 都提供了它吗?
    • 好吧,我是说如果需要你不应该使用它..但我是说对于 rabbitmq 端点之类的东西,你基本上不需要它
    • 啊,好的,知道了,propertysource reload 功能最适合什么?
    • 用于动态且需要在正在运行的应用程序中进行更改的内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-21
    • 1970-01-01
    • 2017-10-26
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多