當卷中使用的ConfigMap
被更新時,所投射的鍵最終也會被更新。kubelet
組件會在每次周期性同步時檢查所掛載的ConfigMap
是否為最新。 不過,kubelet
使用的是其本地的高速緩存來獲得ConfigMap
的當前值。
ConfigMap
既可以通過watch
操作實現內容傳播(默認形式),也可實現基于TTL
的緩存,還可以直接經過所有請求重定向到API
服務器。 因此,從ConfigMap
被更新的那一刻算起,到新的主鍵被投射到Pod
中去,這一 時間跨度可能與 kubelet 的同步周期加上高速緩存的傳播延遲相等。 這里的傳播延遲取決于所選的高速緩存類型 (分別對應watch
操作的傳播延遲、高速緩存的TTL
時長或者 0)。
以環境變量方式使用的ConfigMap
數據不會被自動更新。 更新這些數據需要重新啟動Pod
。
Kubernetes
特性 不可變更的Secret
和ConfigMap
提供了一種將各個Secret
和ConfigMap
設置為不可變更的選項。對于大量使用 ConfigMap 的 集群(至少有數萬個各不相同的ConfigMap
給Pod
?掛載)而言,禁止更改ConfigMap
的數據有以下好處:
-
保護應用,使之免受意外(不想要的)更新所帶來的負面影響。
-
通過大幅降低對?
kube-apiserver
?的壓力提升集群性能,這是因為系統會關閉 對已標記為不可變更的ConfigMap
的監視操作。
可以通過將immutable
字段設置為true
創建不可變更的ConfigMap