iT邦幫忙

2026 iThome 鐵人賽

DAY 15
0

前面十四天把一個正常的應用拼出來了,明天開始我會每天故意弄壞一個地方。但在動手之前,今天先把工具準備好

我想要的是一套固定的順序

kubectl get pods -n ithome-lab
kubectl describe pod <POD_NAME> -n ithome-lab
kubectl logs <POD_NAME> -n ithome-lab
kubectl logs <POD_NAME> -n ithome-lab --previous
kubectl get events -n ithome-lab --sort-by=.metadata.creationTimestamp

一、get pods 可以看外觀,有四個欄位要看:

  • STATUS:Pending 代表還沒被排到任何一台 Node 上;ContainerCreating 是排到了正在準備;Running 代表跑起來了;CrashLoopBackOff 代表一直重啟;ImagePullBackOff 代表拉不到 Image;Completed 是正常結束;Terminating 是正在關
  • READY:Running 加上 0/1 代表程式活著但沒通過 Readiness 檢查
  • RESTARTS:重啟次數
  • AGE:拿來對時間

二、describe 看細節,重點在最下面的 Events 區塊,K8s 把它做過的事跟遇到的錯都寫在這裡

三、logs 給你當前這個 Container 的輸出

四、logs --previous 用在Container 重啟過的話,可以撈到前一次的輸出

五、get events 是把整個 namespace 的事件按時間排出來。describe 只給你那一個 Pod 的事件,但有些問題是跨物件的,Events 預設只保留一小時。如果事情發生在昨天,那就得靠監控

另外幾個常用的

kubectl get pods -n ithome-lab -o wide
kubectl get all -n ithome-lab
kubectl exec -it deploy/web -n ithome-lab -- sh
  • o wide 會多顯示 Pod IP 跟它在哪台 Node 上
  • get all 會一次列出所有常見資源,看整體狀況很快
  • exec 進去是最後手段,當外面所有指令都看不出問題的時候,進去裡面curl

我發現直接問Claude code我的 Pod 壞了怎麼辦,它會很熱心地直接改我的 YAML,然後我什麼都沒學到。所以我固定用這段開頭

你是我的 Kubernetes 助教。我是新手,請遵守以下方式協助我:

1. 先解釋目前看到的現象。
2. 不要直接修改 YAML。
3. 先提出最多三個可能原因。
4. 告訴我需要執行哪些唯讀指令來收集證據。
5. 說明每個指令要觀察哪個欄位。
6. 等我提供結果後,再建議修復方式。
7. 修復後提供驗證步驟。
8. 如果無法確定,請明確說不知道,不要猜測。

明天見 :D


上一篇
Day 14 Probe
系列文
讓Claude Code當我的 K8s 助教:部署、故障排查與入門可觀測性 共 15 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言