- Kubernetes權威指南:從Docker到Kubernetes實踐全接觸(第4版)
- 龔正等編著
- 503字
- 2019-09-23 11:04:38
3.7 Pod生命周期和重啟策略
Pod在整個生命周期中被系統定義為各種狀態,熟悉Pod的各種狀態對于理解如何設置Pod的調度策略、重啟策略是很有必要的。
Pod的狀態如表3.2所示。
表3.2 Pod的狀態

Pod的重啟策略(RestartPolicy)應用于Pod內的所有容器,并且僅在Pod所處的Node上由kubelet進行判斷和重啟操作。當某個容器異常退出或者健康檢查(詳見下節)失敗時,kubelet將根據RestartPolicy的設置來進行相應的操作。
Pod的重啟策略包括Always、OnFailure和Never,默認值為Always。
◎ Always:當容器失效時,由kubelet自動重啟該容器。
◎ OnFailure:當容器終止運行且退出碼不為0時,由kubelet自動重啟該容器。
◎ Never:不論容器運行狀態如何,kubelet都不會重啟該容器。
kubelet重啟失效容器的時間間隔以sync-frequency乘以2n來計算,例如1、2、4、8倍等,最長延時5min,并且在成功重啟后的10min后重置該時間。
Pod的重啟策略與控制方式息息相關,當前可用于管理Pod的控制器包括ReplicationController、Job、DaemonSet及直接通過kubelet管理(靜態Pod)。每種控制器對Pod的重啟策略要求如下。
◎ RC和DaemonSet:必須設置為Always,需要保證該容器持續運行。
◎ Job:OnFailure或Never,確保容器執行完成后不再重啟。
◎ kubelet:在Pod失效時自動重啟它,不論將RestartPolicy設置為什么值,也不會對Pod進行健康檢查。
結合Pod的狀態和重啟策略,表3.3列出一些常見的狀態轉換場景。
表3.3 一些常見的狀態轉換場景
