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。