iT邦幫忙

2024 iThome 鐵人賽

DAY 29
0
DevOps

今天不學遺傳學,跟著Kubernetes種豌豆系列 第 29

Day29. 排除錯誤的脈絡 - Troubleshooting

  • 分享至 

  • xImage
  •  

在日常運作中,會遇到不同類型的錯誤,如何從徵狀查找到源頭,以確切迅速的處理為管理的重要關鍵


服務錯誤

https://ithelp.ithome.com.tw/upload/images/20240902/20168178Q1d8Ldtqyi.png

情境:使用者無法存取服務,從頭開始檢查到尾

  • 是否能連線到web-service: curl <URL>
  • Pod 相關的Service是否正確設定: 像是selector有正確與pod的label對到嗎
  • 前台Pod 是否正常運作:
    • kubectl get pod,狀態(status)、反覆重啟(restart)
    • kubecel describe pod
      • 查看event
      • 查看pod設定
      • 相依的元件是否正確設定,例如無法分配到node,可能為scheduler問題
    • kubectl log <pod>: 可以看到現在pod內的container,但無法顯示重啟前錯誤的logs
      • -f: follow
      • -p: 查看前個container logs
  • 依賴的後台service是否正確運作
  • 依賴的後台pod是否正確運作

參考文件: Troubleshooting applications


Control Plane 問題

  • 檢查節點nodes: kubectl get nodes
  • 檢查pod: kubectl get pods
  • 以pod形式部署的元件是否正常運作 (-n kube-system)
    • pod: kubectl get pods -n kube-system
    • sercice是否正常運作
    • 檢查log: kubectl log <pod> -n kube-system
    • 查詢systemd上的日誌:(-u )
      • 檢查kube-apiserver log: sudo journalctl -u kube-apiserver

參考文件: Troubleshooting Clusters


Worker node問題

  • 檢查節點nodes
    • 一般性確認: kubectl get nodes
    • 查詢個別node資訊: kubectl describe node <node_name>
      • 各condition的status
        • 資源使用量: kubectl top
        • 檔案目錄的空間使用情況: df -h (–human-readable的顯示格式)
      • LastHeartbeatTime: 找出發生錯誤的時間點
      • 檢查kubelet: sudo journalctl -u kubeletsystem status kubelet
        • 啟動服務: systemctl start kubelet
        • 啟動服務: systemctl enable kubelet
        • 檢查狀態: systemctl status kubelet
      • 檢查憑證及CA是否有效: 內容有效,或錨定的目錄正確與否
  • 檢查pod: kubectl get pods

上一篇
Day28. CKA考題練習:創建多容器的pod
下一篇
Day30. 想練習概念與指令?那就自己建立一個K8S cluster吧!
系列文
今天不學遺傳學,跟著Kubernetes種豌豆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言