Kubernetes如何滚动优雅更新资源对象配置

需求描述
用户定义Kubernetes的资源对象(例如Deployment、Daemonset 等),配置文件以configmap定义,通过Volumemounts进行挂载 到Pod里,配置文件修改以后,服务可以自动reload加载更新配置。
解决方案
  • 限制条件:Kubernetes版本在1.9以及以上
  • 通过添加注解annotation的方式实现
  • 示例: configmap变更以后,自动触发资源对象的配置更新

 

 

按照指定的 configmap 变更自动触发资源对象的配置更新

  • 单 configmap

 

  • 多 configmap,以逗号对多个 configmap 进行隔离

  • secret 的滚动更新方式同 configmap
核心知识
  1. configmap 和 secret 均为 kubernetes 的存储对象,kubernetes
    的对象分类为资源对象、存储对象、策略对象、身份对象
  2. configmap 解耦容器应用部署和配置
  3. configmap 的使用方法:1)生成为容器内的环境变量;2)设置
    为容器启动命令参数;3)挂载为容器内部的文件或目录
  • 初始化配置放到 configmap 和 secret 上

 

参考资料
https://github.com/stakater/Reloader
https://jimmysong.io/kubernetes-handbook/concepts/objects.html

发表评论