跳到主要内容

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 containerrestartPolicy設為never,那此init container的fail就會導致整個pod無法起來,並且狀態進入failed。

Sidecar containers

K8S在1.29引入的新功能,藉由把init containerrestartPolicy設定為always,就可以讓init container變成sidecar container,不用exit而有自己的lifecycle。

而且sidecar container不會block pod termination,如果regular container exits,則在最後sidecar containers也被stop,整個pod terminated。