使用情況下(或不頭盔覆蓋ConfigMap值):如何爲Kubernetes ConfigMap設置默認值
我希望能夠重新運行從第一作業中斷處的工作。我正在使用頭盔部署到Kubernetes。
我的想法是在ConfigMap中保存第一份工作的狀態。定義ConfigMap的ConfigMap yaml與作業打包在一起,並且兩者都與Helm同時部署。
apiVersion: v1
kind: ConfigMap
metadata:
name: NameOfMyConfigMap
data:
someKey: someValue
MY_STATE: state <---- See below as to whether this should be included or not
作業運行從ConfigMap的ENV變量設置:
env:
- name: MY_STATE
valueFrom:
configMapKeyRef:
name: NameOfMyConfigMap
key: MY_STATE
作業運行,看起來,看看是否$ MY_STATE設置一個腳本,如果不設置它,然後工作第一次運行,否則作業關閉已經運行的第一個作業,將第一個作業的狀態保存到MY_STATE ConfigMap變量中,並使用保存的狀態再次啓動作業。
如果我沒有在初始ConfigMap定義中聲明MY_STATE鍵,那麼作業的第一次運行將失敗,因爲上面的ENV定義找不到ConfigMap變量。
如果我確實在ConfigMap定義中聲明瞭值(MY_STATE: ""
),那麼第一次部署將會起作用。但是,如果我用helm upgrade
重新部署作業,那麼在定義中輸入的值是否不會覆蓋現有ConfigMap中的現有值?
在同一工作的運行之間存儲狀態的最佳方法是什麼?
共享狀態可以用一個配置地圖爲你在做什麼(發明)來完成,但後來我想創建一個配置地圖是掌舵的控制之外。一種似乎更常用的方法是使用etcd來保持狀態,所以這可能更適合你的創新方法。 –