kubernetes (k8s)Pod生命周期和重啟策略
Pod的狀態描述
狀態值 描述
Pending API Server已經創建該Pod,但在Pod內還有一個或多個容器的鏡像沒有創建,包括正在下載鏡像的過程。
Runnung Pod內所有容器均已創建,且至少有一個容器處於運行狀態、正在啟動狀態或正在重啟狀態。
Succeeded Pod內所有容器均成功執行后退出,且不會再重啟。
Failed Pod內所有容器均已退出,但至少有一個容器退出為失敗狀態。
Unknown 由於某種原因無法獲取該Pod的狀態,可能由於網絡通信不暢導致。
Pod的重啟策略(RestartPolicy)
Pod的重啟策略(RestartPolicy)應用與Pod內所有容器,並且僅在Pod所處的Node上由kubelet進行判斷和重啟操作。當某個容器異常退出或者健康檢查失敗時,kubelet將根據RestartPolicy的設置來進行相應的操作。
Pod的重啟策略包括:Always、OnFailure和Never,默認值為Always。
Always:當容器失效時,由kubelet自動重啟該容器。
OnFailure:當容器終止運行且退出碼不為0時,由kubelet自動重啟該容器。
Never:不論容器運行狀態如何,kubelet都不會重啟該容器。
Pod的重啟策略與控制方式息息相關,當前可用於管理Pod的控制器包括ReplicationController、Job、DaemonSet及直接通過kubelet管理(靜態Pod)。每種控制器對Pod的重啟策略要求如下:
Pod的重啟策略與控制方式息息相關,當前可用於管理Pod的控制器包括ReplicationController、Job、DaemonSet及直接通過kubelet管理(靜態Pod)。每種控制器對Pod的重啟策略要求如下:
RC和DaemonSet:必須設置為Always,需要保證該容器持續運行。
Job和CronJob:OnFailure或Never,確保容器執行完成后不再重啟。
kubelet:在Pod失效時自動重啟它,不論將RestartPolicy設置為什么值,也不會對Pod進行健康檢查。
