Kubernetes 配置映射重新加载问题

发布于 2025-01-13 16:32:52 字数 518 浏览 1 评论 0原文

我在 Spring Boot 项目中有 Kubernetes 配置映射,如果配置映射中的任何值发生变化,我的应用程序应该动态地从配置映射中获取值,因此我在 bootstarp.yml 文件中使用了 Spring Cloud kubernetes 配置,如下所示

spring:
  profiles: dev, preprod
  cloud:
    kubernetes:
      reload:
        enabled: true
      config:
        enabled: true
        sources:
          - namespace: ${kubernetesnamespace}
            name: ${configmapname}

部署应用程序后,如果我去更改配置映射值,我可以在不重新启动的情况下进入应用程序,这是预期的,但如果我在部署 1 小时后更改配置映射值,配置映射的新值不会反映在应用程序中,但与我所做的相同部署5分钟后,它就可以工作了。 那么可能是什么原因呢。

I am having Kubernetes Config map in spring boot project and My application should dynamically get the values from config map if any values changes in config map so for that I have used spring cloud kubernetes config like below in bootstarp.yml file

spring:
  profiles: dev, preprod
  cloud:
    kubernetes:
      reload:
        enabled: true
      config:
        enabled: true
        sources:
          - namespace: ${kubernetesnamespace}
            name: ${configmapname}

After deploying the application , If I go and change the config map value I am able to get in application without restart which is expected but If I change the config map value after 1 hour of deployment this new value of config map is not reflecting in application but same I f do after 5 mins of deployment it is working.
So what could be the reason.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

不寐倦长更 2025-01-20 16:32:52

可能是什么原因

我的第一个怀疑是应用程序本身。这可能会“监视”ConfigMap(打开一个长期存在的连接,订阅该对象的更改)。最终,这些连接可能会关闭,这是正常/预期的(容器重新启动、etcd 领导者更改、SDN 问题等)。

我会确保我的应用程序正确确认这些并重新连接到 API。

what could be the reason

My first suspect would be the application itself. That probably "watches" for the ConfigMap (opens a long-living connection, subscribing for changes on that object). Eventually, those connections may close, which is normal/expected (container restart, etcd leader changes, SDN issues, ...).

I would make sure my application properly acknowledges those and re-connects to the API.

宫墨修音 2025-01-20 16:32:52

为了重新加载工作,需要重新加载的候选类需要用@RefreshScope进行注释。

请参阅文档参考:
https://docs.spring.io /spring-cloud-kubernetes/docs/current/reference/html/#propertysource-reload

请注意,默认重新加载策略是“refresh”,除非指定,否则不会重新加载整个上下文。我希望这有帮助。

For reload to work, the classes candidate for reloading are needed to be annotated with @RefreshScope.

Please see documentation reference:
https://docs.spring.io/spring-cloud-kubernetes/docs/current/reference/html/#propertysource-reload

Notice that default reload strategy is "refresh" and whole context is not reloaded unless specified. I hope that helps.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文