spring-boot - Kubernetes集群中的SpringBoot服务如何知道计数器服务地址变化?
问题描述
我在 Kubernetes 集群中有一堆应用程序,它们相互连接,例如 SpringBoot 应用程序连接到 RabbitMQ。它们都在容器中。
通常独立的 SpringBoot 应用程序从 application.yaml/bootstrap.yaml 读取配置,但 AFAIK 在 Kubernetes 集群的情况下它从 ConfigMap 读取它,并且计数器服务的地址应该存储在那里(是吗?)
所以问题是:如果 RabbitMQ pod 重新部署(例如失败并重新启动),如何触发 SpringBoot 以重新读取新配置?谁触发它?什么时候?
解决方案
Spring Cloud kubernetes具有proertysource reload功能,并且能够在相关的 ConfigMap 或 Secret 更改时触发应用程序重新加载。因此,如果 rabbitmq 端点发生变化,您可以更新 configMap,应用程序将自动重新加载并获取新配置。但在实际生产场景中,您将拥有一个通过 kubernetes服务公开的 rabbitmq 的稳定端点。即使 pod IP 可能会更改服务 IP 或 DNS 将保持不变。
rabbitmq 应该部署为StatefulSet提供表,唯一的网络标识符。
推荐阅读
- react-native - 说请附加方法到这个组件
- google-maps - 从 Google 地图中获取目的地列表的当前旅行时间到工作表中
- java - Java:在命令行中,找不到或加载主类
- python - Python 创建一个带有反馈的迭代器/生成器
- c# - 无法将字符串显式转换为浮点数
- javascript - 如何在 WebStorm 中将内部函数从一个 JavaScript 文件调用到另一个 JavaScript 文件?(使用 module.exports 除外)
- dnssec - QUIC 协议的正确 TLSA 记录是什么?
- selenium - RemoteWebDriver 在调用 switchTo() 方法时导致 stackoverflow 错误
- ios - 是否可以使用 MDM 阻止来自特定 ios 端口的流量
- c - 在 C 中定义常量之间的依赖关系?