pod 在整個生命週期中被系統定義為各種狀態,熟悉 pod 的各種狀態對於理解如何設定 pod 的排程策略、重啟策略是很有必要的。
pod 的狀態
狀態值描述
pending
running
pod 內所有容器均已建立,且至少有乙個容器處於執行狀態、正在啟動狀態或正在重啟狀態
succeeded
pod 內所有容器均成功執行後退出,且不會再重啟
failed
pod 內所有容器均已退出,但至少有乙個容器退出為失敗狀態
unknown
由於某種原因無法獲取該 pod 的狀態,可能由於網路通訊不暢導致
pod 的重啟策略(restartpolicy)應用於 pod 內的所有容器,並且僅在 pod 所處的 node 上由kubelet
進行判斷和重啟操作。
當某個容器異常退出或者健康檢查失敗時,kubelet
將根據 restartpolicy 的設定來進行相應的操作。
pod 的重啟策略包括always
、onfailure
和never
,預設值為always
。
kubelet
重啟失效容器的時間間隔以sync-frequency
乘以 2n 來計算,例如,1、2、4、8倍等,最長延時 5min,並且在成功重啟後的 10min 後重置該時間。
pod 的重啟策略與控制方式息息相關,當前可用於管理 pod 的控制器包括replicationcontroller
、job
、daemonset
及直接通過kubelet
管理(靜態pod)。 每種控制器對 pod 的重啟策略要求如下。
結合 pod 的狀態和重啟策略,下表列出了一些常見的狀態轉換場景。
pod 包含的容器數
pod 當前的狀態
發生時間
pod 的結果狀態 always
pod 的結果狀態 onfailure
pod 的結果狀態 never
包含 1 個容器
running
容器成功退出
running
succeeded
succeeded
包含 1 個容器
running
容器失敗退出
running
running
failed
包含兩個容器
running
1 個容器失敗退出
running
running
running
包含兩個容器
running
容器被 oom 殺掉
running
running
failed
pod 生命週期
此刻建立 pod 因為容器的路徑下沒有 index1.html 這個檔案,所有 pod 一直處在 ready 狀態 我們進入容器,在網頁根目錄下建立乙個 index1.html 的檔案 此刻檢視 pod 狀態,發現 pod 已經 ready command 命令的意思是 1 建立 tmp live ...
pod的生命週期
pod的生命週期 pod phase pod的相位 pod的status資訊儲存在podstatus中定義,其中有乙個phase欄位。pod的相位phase是pod在其生命週期的加到巨集觀概述。pod相位的數量和含義是嚴格指定的。phase可能的值 running pod已經被排程到某節點上,並且所...
k8s Pod生命週期和重啟策略
kubernetes k8s pod生命週期和重啟策略 pod的狀態描述 狀態值 描述 runnung pod內所有容器均已建立,且至少有乙個容器處於執行狀態 正在啟動狀態或正在重啟狀態。succeeded pod內所有容器均成功執行後退出,且不會再重啟。failed pod內所有容器均已退出,但至...