试图确定一些重要的分片配置的存储位置,但我还没有找到足够的关于Kube ConfigMaps可靠性的文档来减轻烦恼。
说我有一个单集群kube pod规范,该规范在pod开始时(使用configMapKeyRef注入一个具有configmap条目值的环境变量。我有很多基于此规范运行的Pod。
kubectl edit
configmap条目,然后等待操作成功。这些Pod是否保证可以看到新的configmap值? (或者,如果失败,我是否需要等待一段时间才能重新启动Pod以确保它们获得新值?)
类似地,假设所有Pod在重新启动期间都没有对configmap进行编辑,是否可以保证它们具有一致的值?
答案 0 :(得分:3)
Kubernetes是最终的一致性系统。要更改值,recommended是创建新的ConfigMap 。
在群集中更改实时configMap所保存的数据被认为是不好的做法。部署无法知道它们所引用的configMap已经更改,因此此类更新无效。
使用Declarative config management with Kustomize,使用configMapGenerator更容易做到
更改部署配置的推荐方法是
- 使用新名称创建新的configMap,
- 修补部署,修改相应的configMapKeyRef字段的名称值。
部署
当使用 configMapGenerator 将Kustomize同时用于Deployment
和ConfigMap
时,ConfigMap
的名称将根据内容和对{{ ConfigMap
中的1}}将使用生成的名称进行更新,以便触发新的滚动部署。