在 K8s 中,ConfigMap 是存储非敏感配置的资源(比如服务端口、日志级别),而 immutable 是它的一个核心字段,用来控制 ConfigMap 是否能修改:

immutable: true:ConfigMap 变成「只读」,数据不可变,只能删了重建;

immutable: false(默认):ConfigMap 可以随时修改,比如用 kubectl edit 改内容。

(1)如果需要修改不可变的 ConfigMap,必须先删除旧的 ConfigMap,再创建新的(名称可以相同)。

eg:

kubectl get configmap myconfigmap -o yaml > cm.yaml(如何没有yaml文件,先导出yaml文件)

kubectl delete configmap myconfigmap

vim cm.yaml

kubectl apply/create -f cm.yaml

(2)如果需要修改可变的ConfigMap,使用kubectl edit configmap myconfigmap或kubectl apply -f configmap.yaml就可以更新已有的configmap资源。

(3)因为 K8s 挂载 ConfigMap 时,默认是「一次性挂载」——Pod 启动时把配置读进内存,之后 ConfigMap 变化,Pod 不会主动重新读取。configMap变化后,需要重启 Pod 或通过滚动更新让 Pod 重新挂载。

(4)建议对生产环境中稳定的配置使用 immutable: true,对频繁变更的配置保持默认的 immutable: false

总结:

1.immutable: true 是 ConfigMap 的「安全锁」,防止误改,适合稳定配置;

2.修改不可变 ConfigMap 要「删旧建新」,修改可变的直接编辑就行;

3.配置更新后,必须重启 Pod 或滚动更新,否则不生效。”

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐