建立pod物件並運行後,您可以從API讀取pod物件來查看pod的情況。pod物件manifest以及大多數其他類型物件的manifest都包含一個提供物件狀態的區段。 一個pod的status區段包含以下資訊:
IP和啟動時間不需要任何進一步解釋,QoS class現在不相關 → 你將在第 19 章中了解它。 但是,Pod的階段和條件,以及它的容器狀態對於您了解pod生命週期很重要。
在pod生命的任何時刻,pod都處於下圖所示的五個階段之一。
圖 6.1 pod 的各個階段
下表解釋了每個階段的含義。
pod階段 | 描述 |
---|---|
Pending | 建立Pod物件後,這是pod的初始階段。在pod被調度到一個節點並且pod容器的image被拉取並啟動之前,pod一直處於這個階段。 |
Running | 至少有一個pod的容器正在運行。 |
Succeeded | 不打算永久運行的Pod被標記為Succeeded → 當所有容器成功完成。 |
Failed | 當pod沒有設定為永久運行並且至少有一個容器未成功終止時,該 pod 被標記為 Failed。 |
Unknown | pod 的狀態未知,因為Kubelet已停止報告與API Server的通訊。很可能工作節點發生故障或網路斷線。 |
pod的階段提供了關於pod正在發生什麼事的快速總結。再次部署kiada pod並檢查它的階段。利用再次將manifest檔案套用到您的叢集來建立pod。
$ kubectl apply -f pod.kiada.yaml
pod的階段 → pod物件的status區段中的其中一個字段。您可以顯示manifest並使用grep方式來篩選關鍵字phase:
$ kubectl get po kiada -o yaml | grep phase
phase: Running
<aside>
💡 您也可以使用jq
列印出phase字段的值,例如:kubectl get po kiada -o json | jq .status.phase
</aside>
您還可以使用kubectl describe
查看pod的階段。pod的狀態顯示在輸出上方附近。
$ kubectl describe po kiada
Name: kiada
Namespace: default
...
Status: Running
...