k8s-3 Pod status 狀態詳解


pod從創建到最后的創建成功會分別處於不同的階段,在源碼中用PodPhase來表示不同的階段:

img

運行中(PodRunning):該 Pod 已經綁定到了一個節點上,Pod 中所有的容器都已被創建。至少有一個容器正在運行,或者正處於啟動或重啟狀態。

等待中(PodPending): Pod 已被 Kubernetes 系統接受,但有一個或者多個容器鏡像尚未創建。等待時間包括調度 Pod 的時間和通過網絡下載鏡像的時間,這可能需要花點時間。

創建pod的請求已經被k8s接受,但是容器並沒有啟動成功,可能處在:寫數據到etcd,調度,pull鏡像,啟動容器這四個階段中的任何一個階段,pending伴隨的事件通常會有:ADDED, Modified這兩個事件的產生。

正常終止(PodSucceeded):pod中的所有的容器已經正常的自行退出,並且k8s永遠不會自動重啟這些容器,一般會是在部署job的時候會出現。

異常停止(PodEailed):Pod 中的所有容器都已終止了,並且至少有一個容器是因為失敗終止。也就是說,容器以非0狀態退出或者被系統終止。

未知狀態(PodUnkonwn):出於某種原因,無法獲得Pod的狀態,通常是由於與Pod主機通信時出錯。

img

api/core/v1

一個pod的完整創建,通常會伴隨着各種事件的產生,k8s種事件的種類總共只有4種:

Added EventType = "ADDED"

Modified EventType = "MODIFIED"

Deleted EventType = "DELETED"

Error EventType = "ERROR"

PodStatus 有一組PodConditions。 PodCondition中的ConditionStatus,它代表了當前pod是否處於某一個階段(PodScheduled,Ready,Initialized,Unschedulable),“true” 表示處於,“false”表示不處於。

PodCondition數組的每個元素都有一個類型字段和一個狀態字段。

類型字段 PodConditionType 是一個字符串,可能的值是

PodScheduled:pod正處於調度中,剛開始調度的時候,hostip還沒綁定上,持續調度之后,有合適的節點就會綁定hostip,然后更新etcd數據

Ready: pod 已經可以開始服務,譬如被加到負載均衡里面

Initialized:所有pod 中的初始化容器已經完成了

Unschedulable:限制不能被調度,譬如現在資源不足

狀態字段 ConditionStatus 是一個字符串,可能的值為True,False和Unknown

------------------------------------------------------pod status--------------------------------------------------------------

CrashLoopBackOff:容器退出,kubelet正在將它重啟

InvalidImageName:無法解析鏡像名稱

ImageInspectError:無法校驗鏡像

ErrImageNeverPull:策略禁止拉取鏡像

ImagePullBackOff:鏡像正在重試拉取

RegistryUnavailable:連接不到鏡像中心

ErrImagePull:通用的拉取鏡像出錯

CreateContainerConfigError:不能創建kubelet使用的容器配置

CreateContainerError:創建容器失敗

m.internalLifecycle.PreStartContainer:執行hook報錯

RunContainerError:啟動容器失敗

PostStartHookError:執行hook報錯

ContainersNotInitialized:容器沒有初始化完畢

ContainersNotReady:容器沒有准備完畢

ContainerCreating:容器創建中

PodInitializing:pod 初始化中

DockerDaemonNotReady:docker還沒有完全啟動

NetworkPluginNotReady:網絡插件還沒有完全啟動


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM