本頁說明如何解決 Google Distributed Cloud 的 Kubernetes 控制器管理員 (kube-controller-manager
) 問題。
失去領導者選舉
如果 kube-controller-manager
(KCM) 意外重新啟動,您可能會在區域叢集或複製的控制層中看到這個錯誤。重新啟動時,kubelet
可能會自行結束或重新啟動。KCM 記錄可能包含 leaderelection lost
訊息。
如果領導者在 KCM 健康狀態檢查期間,檢查自己是否仍處於領導狀態,就可能發生這種情況。
如果領導者不再領導或租約檢查失敗,健康狀態檢查會回報不健康,領導者就會重新啟動。
您可以擷取 coordination.k8s.io
群組的 Lease
資源,取得領導者選舉狀態:
如要查看所有租約,請執行下列
kubectl
指令:kubectl -n kube-system get lease
如要檢查特定租約 (例如
lease/kube-controller-manager
) 的狀態,請使用下列kubectl describe
指令:kubectl -n kube-system describe lease/kube-controller-manager
在
Events
部分下方,檢查是否有LeaderElection
事件。查看誰會接任領導職位,以及接任時間。以下輸出範例顯示,當第一個節點手動關閉時,第二個節點會立即接管領導權:Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal LeaderElection 26m kube-controller-manager control-plane_056a86ec-84c5-48b8-b58d-86f3fde2ecdd became leader Normal LeaderElection 5m20s kube-controller-manager control-plane2_b0475d49-7010-4f03-8a9d-34f82ed60cd4 became leader
您也可以使用依
name
分組的kubernetes.io/anthos/leader_election_master_status
指標,觀察領導權的失去和取得過程。
只有在現任領導者失敗時,才會進行領導者選舉程序。您可以查看依 container_name
kube-controller-manager
篩選的 kubernetes.io/anthos/container/uptime
和 kubernetes.io/anthos/container/restart_count
指標,確認失敗原因。
如果領導者選舉程序持續執行或失敗,請參考下列補救措施考量事項:
- 如果 KCM 每隔幾分鐘或更短的時間就會重新啟動,請檢查 KCM 記錄檔,確認是否有對 API 伺服器提出的要求失敗。要求失敗表示元件之間有連線問題,或是服務的某個部分超載。
- 如果控制器管理員無法與 API 伺服器通訊太久,即使連線稍後恢復,續約也會失敗,KCM 執行個體會失去領導權。
- 如果控制層已複製,新的領導者應會順利接管,不會發生停機情形。您無須採取任何行動,多雲端或地區叢集的控制層一律會複製。請勿嘗試停用複製控制層的領導者選舉。您無法在不停機的情況下重新啟用領導者選舉。
後續步驟
如需其他協助,請與 Cloud Customer Care 團隊聯絡。
如要進一步瞭解支援資源,包括下列項目,請參閱「取得支援」: