Kubernetes如何滚动优雅更新资源对象配置
需求描述
用户定义Kubernetes的资源对象(例如Deployment、Daemonset 等),配置文件以configmap定义,通过Volumemounts进行挂载 到Pod里,配置文件修改以后,服务可以自动reload加载更新配置。
解决方案
- 限制条件:Kubernetes版本在1.9以及以上
- 通过添加注解annotation的方式实现
- 示例: configmap变更以后,自动触发资源对象的配置更新
按照指定的 configmap 变更自动触发资源对象的配置更新
- 单 configmap
- 多 configmap,以逗号对多个 configmap 进行隔离
- secret 的滚动更新方式同 configmap
核心知识
- configmap 和 secret 均为 kubernetes 的存储对象,kubernetes
的对象分类为资源对象、存储对象、策略对象、身份对象 - configmap 解耦容器应用部署和配置
- configmap 的使用方法:1)生成为容器内的环境变量;2)设置
为容器启动命令参数;3)挂载为容器内部的文件或目录
- 初始化配置放到 configmap 和 secret 上
参考资料
https://github.com/stakater/Reloader
https://jimmysong.io/kubernetes-handbook/concepts/objects.html