我們可以首先使用kubectl get pods指令得到pod清單,比如我們想研究pod nginx-storage-pod的明細:
使用指令kubectl describe pod nginx-storage-pod > nginx-storage-pod.yaml, 将describe指令的輸出重定向到一個yaml檔案裡。用vi打開這個yaml檔案:
pod的所有屬性可以從這個yaml檔案裡學習:
node:shoot–k8s-train–shacw46-worker-prvfv-z1-7844dc6744-ghd5m/10.250.0.6
表明pod所在的node,這個node一定是指令kubectl get node傳回的結果之一:
Image:代表該pod是基于哪一個docker image建立的。
Mount:該pod使用的persistent volume對應的實體檔案目錄,我的例子是.usr/share/nginx/html
這個路徑從哪裡來的呢?就是我的pod檔案的yaml檔案裡的定義:
describe指令除了本文介紹的可以用來深入學習pod的屬性外,還可以用于pod不能正常啟動時的錯誤排查。
比如我有一個pod名為another3,狀态一直處于CrashLoopBackOff, RESTART次數為12:
使用kubectl describe pod another3就可以看到這個容器啟動的明細:Back-off restarting failed container
仔細檢查pod的yaml檔案,發現原因是因為我定義了volume的name為content-storage,但是沒有指定persistentvolumeclaim。當我把volumes: - name: content-storage删除之後,
下圖是修改後的yaml檔案:
重新建立名為another3的pod,很快就建立成功并且狀态處于running了: