Troubleshooting kubelet Issue:
<記得是kube let不是ctl !!>
比如說在Control Plane Node確認各個Node狀態得到如下結果:
發現有一台居然顯示NotReady狀態,所以身為管理者該如何Debug?
這通常發生在該Node上的kubelet有異常
所以通常要到該台Node上確認kubelet執行狀態
最前面架構與安裝有學到kubelet並不是以Pod形式運行,而是Linux Process
所以要以Linux Process的處理方式,首先進到worker1機台上:
- 1.確認Process狀態,執行:
service kubelet status
- 2.為了更進一步了解kubelet發生的狀況,在看看kubelet的log資訊,執行:
journalctl -u kubelet
- 3.最後查找相關資訊得到目錄問題:
- 確認kubelet的實際位置執行:
which kubelet
- 上述/usr/bin/kubelet才是正確的kubelet二進位套件的執行位置
- 至於kubelet是如何指定到/usr/local/bin/kubelet目錄的則是在下圖:
- 所以找到:
- cat內容看到:
- 接著就是sudo vi 進去修改後儲存:
- 接著讓系統重新讀取設定,並將kubelet服務重啟載入設定,連續執行以下:
讀取設定與重啟
sudo systemctl daemon-reload
sudo systemctl restart kubelet
- 然後確認狀態kubelet執行:
service kubelet status
- 回到master機確認狀態:
Troubleshooting kubectl Connection Issue:
另一種狀況是突然地在執行kubectl指令時無效,例如:
- 由前面學習知道,這些指令會送往API Server
- 而API Server就是在master機
- 並且發動kubectl指令會去參考到~/.kube/config檔案內容
- 也是我們第一個該Debug的檔案! 所以cat指令查看其內容:
- 首先複製CA憑證內容,並將其base64解密看看,執行:
echo {內容}|base64 --decode
- 並將內容與/etc/kubenetes/pki/ca.crt內容比對:
- 以上確認了~/.kube/config內的ca憑證應該沒有問題!
- 接著要看看API Server endpoint是否正確,可以執行:
kubectl config view
- 簡單點直接看到AWS上的master機的私網IP位置:
- 如上此時就找到該修正的地方 →API Server的url
- 所以進入到~/.kube/config修改
- 修正儲存後再次嘗試執行kubectl指令:
以上大略示範可能的狀況與Debug的方式