使用 Kubernetes API 對工作者節點進行除錯
如果您具有叢集的存取權,則可以在 Node 資源上使用 Kubernetes API 對工作者節點進行除錯。
在開始之前,請確定您在所有命名空間中擁有 Manager 服務存取角色,或群集的 Administrator 平台角色,該角色對應於 cluster-admin RBAC 角色。
-
列出叢集裡的工作者節點,並記下不在
ReadySTATUS 中之工作者節點的 NAME。 請注意,NAME 是工作者節點的專用 IP 位址。oc get nodes -
說明每一個工作者節點,並檢閱輸出中的
Conditions區段。Type: 可能影響工作者節點的狀況類型,例如記憶體或磁碟壓力。LastTransitionTime: 最近更新狀態的時間。 使用此時間來識別工作者節點問題開始的時間,這可協助您進一步對問題進行疑難排解。
oc describe node <name> -
檢查工作節點的使用情況。
- 在前一個指令的
Allocated resources輸出中,檢閱使用工作者節點 CPU 及記憶體資源的工作量。 您可能會注意到部分 Pod 未設定資源限制,且耗用的資源超出預期。 如果是這樣,請調整 Pod 的資源使用情形。 - 檢閱叢集中工作者節點的 CPU 及記憶體使用率百分比。 如果使用率持續超過 80%,請將更多工作者節點新增至叢集,以支援工作負載。
- 在前一個指令的
-
檢查叢集裡安裝的自訂許可控制器。 許可控制器通常會封鎖必要的 Pod 執行,這可能會讓工作者節點進入嚴重狀態。 如果您有自訂許可控制器,請嘗試使用
oc delete移除它們。 然後,檢查工作者節點問題是否已解決。kubectl get mutatingwebhookconfigurations --all-namespaceskubectl get validatingwebhookconfigurations --all-namespaces -
如果您已配置 日誌轉遞,請從下列路徑檢閱節點相關日誌。
/var/log/kubelet.log /var/log/syslog /var/log/messages -
請檢查工作量部署是否不會導致工作者節點問題。
- 使用問題來污染工作者節點。
oc taint node NODEIP ibm-cloud-debug-isolate-customer-workload=true:NoExecute - 請確定您已依照步驟 5 的說明來刪除任何自訂許可控制器。
- 重新啟動工作者節點。
- 經典:重新載入 Worker 節點。
ibmcloud oc worker reload -c <cluster_name_or_ID> --worker <worker_ID> - VPC:更換工作站節點。
ibmcloud oc worker replace -c <cluster_name_or_ID> --worker <worker_ID> --update
- 經典:重新載入 Worker 節點。
- 等待工作者節點完成重新啟動。 如果工作者節點進入健全狀態,則問題可能是工作負載所造成。
- 在工作者節點上一次排定一個工作量,以查看導致問題的工作量。 若要排定工作量,請新增下列容錯。
tolerations: - effect: NoExecute key: ibm-cloud-debug-isolate-customer-workload operator: Exists - 在您識別導致問題的工作負載之後,請繼續 對應用程式部署進行除錯。
- 使用問題來污染工作者節點。