K8S init containers and sidecar containers
Init containers
如果在跑主要程式的container啟動之前,有想要先完成的事情,但可能跟業務邏輯沒關係, 所以不適合放在主程式的container裡面,就可以利用init container。
跑主程式的container稱作regular container
。在K8S,init containers跑完才會啟動regular container
,如何任何一個init container
無法完成,K8S就會retry直到所有init container
都完成並且exit。
但如果init container
的restartPolicy
設為never
,那此init container
的fail就會導致整個pod無法起來,並且狀態進入failed。
Sidecar containers
K8S在1.29引入的新功能,藉由把init container
的restartPolicy
設定為always
,就可以讓init container
變成sidecar container
,不用exit而有自己的lifecycle。
而且sidecar container
不會block pod termination,如果regular container
exits,則在最後sidecar containers
也被stop,整個pod terminated。