k8s中pod的幾個階段


如果把pod看作是一台物理電腦的話,它也有開機,關機,運行,開機中,等階段

對象在 Kubernetes 中的生命周期。

Pod 生命周期的變化,主要體現在 Pod API 對象的 Status 部分,這是它除了 Metadata 和 Spec 之外的第三個重要字段。

其中,pod.status.phase,就是 Pod 的當前狀態,

它有如下幾種可能的情況:

Pending。這個狀態意味着,Pod 的 YAML 文件已經提交給了 Kubernetes,API 對象已經被創建並保存在 Etcd 當中。但是,這個 Pod 里有些容器因為某種原因而不能被順利創建。比如,調度不成功。

Running。這個狀態下,Pod 已經調度成功,跟一個具體的節點綁定。它包含的容器都已經創建成功,並且至少有一個正在運行中。Succeeded。這個狀態意味着,Pod 里的所有容器都正常運行完畢,並且已經退出了。這種情況在運行一次性任務時最為常見。

Failed。這個狀態下,Pod 里至少有一個容器以不正常的狀態(非 0 的返回碼)退出。這個狀態的出現,意味着你得想辦法 Debug 這個容器的應用,比如查看 Pod 的 Events 和日志。

Unknown。這是一個異常狀態,意味着 Pod 的狀態不能持續地被 kubelet 匯報給 kube-apiserver,這很有可能是主從節點(Master 和 Kubelet)間的通信出現了問題。

 

更進一步地,Pod 對象的 Status 字段,還可以再細分出一組 Conditions。

這些細分狀態的值包括:PodScheduled、Ready、Initialized,以及 Unschedulable。它們主要用於描述造成當前 Status 的具體原因是什么。

比如,Pod 當前的 Status 是 Pending,對應的 Condition 是 Unschedulable,這就意味着它的調度出現了問題。

而其中,Ready 這個細分狀態非常值得我們關注:它意味着 Pod 不僅已經正常啟動(Running 狀態),而且已經可以對外提供服務了。

這兩者之間(Running 和 Ready)是有區別的。

Pod 的這些狀態信息,是我們判斷應用運行情況的重要標准,尤其是 Pod 進入了非“Running”狀態后,你一定要能迅速做出反應,根據它所代表的異常情況開始跟蹤和定位,而不是去手忙腳亂地查閱文檔。


免責聲明!

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



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