zoukankan      html  css  js  c++  java
  • Kubernetes ConfigMap热更新

    ConfigMap是用来存储配置文件的kubernetes资源对象,所有的配置内容都存储在etcd中.

    总结

    更新 ConfigMap 后:

    • 使用该 ConfigMap 挂载的 Env 不会同步更新
    • 使用该 ConfigMap 挂载的 Volume 中的数据需要一段时间(实测大概10秒)才能同步更新

    ENV 是在容器启动的时候注入的,启动之后 kubernetes 就不会再改变环境变量的值,且同一个 namespace 中的 pod 的环境变量是不断累加的,参考 Kubernetes中的服务发现与docker容器间的环境变量传递源码探究。为了更新容器中使用 ConfigMap 挂载的配置,可以通过滚动更新 pod 的方式来强制重新挂载 ConfigMap,也可以在更新了 ConfigMap 后,先将副本数设置为 0,然后再扩容。


    在kubernetes中,更新configMap后,pod是不会自动识别configMap中的变动。

    configMap更新后,如果想使pod中引用configMap的变量生效,
    通常简单的做法是:
    方法1. 删除该pod,让其自动产生一份新的pod.
    方法2. 修改pod的配置,让其自动产生一份新的pod.
    方法3. 增加一个sidecar,让其监控configMap的变化,来重启pod.

    原理就是:通过更新deployment中的Annotations,增加一个version的key,每次需要更新configMap,只要upgrade一次kustomization.yaml中的commonAnnotations->version的值,发布后,pod就会自动重建一次,以此来发现confiMap的新值。

    参考网址:https://blog.csdn.net/kozazyh/article/details/89137223

  • 相关阅读:
    OO第一单元总结
    [软件工程]提问回顾与个人总结
    结对项目-最长单词链总结
    [软件工程]第一次阅读作业
    [软件工程] 第0次作业
    提问回顾与个人总结
    结对作业博客
    软工第1次个人作业
    软工第0次个人作业
    OO第四次总结
  • 原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/13084064.html
Copyright © 2011-2022 走看看