Auf dieser Seite wird beschrieben, wie Sie Probleme mit dem Kubernetes-Controller-Manager (kube-controller-manager
) für Google Distributed Cloud beheben.
Wahl des Leaders fehlgeschlagen
Dieser Fehler kann in einem regionalen Cluster oder einer replizierten Steuerungsebene auftreten, wenn kube-controller-manager
(KCM) unerwartet neu gestartet wird. Dabei wird KCM möglicherweise beendet oder von kubelet
neu gestartet. Die KCM-Logs enthalten möglicherweise leaderelection lost
-Nachrichten.
Dieses Szenario kann auftreten, wenn der Leader im Rahmen der KCM-Systemdiagnose prüft, ob er noch aktiv der Leader ist.
Wenn der Leader nicht mehr führt oder die Freigabeprüfung fehlschlägt, wird in der Systemdiagnose „Fehlerhaft“ gemeldet und der Leader wird neu gestartet.
Der Status der Leader-Auswahl kann durch Abrufen der Lease
-Ressourcen der coordination.k8s.io
-Gruppe eingesehen werden:
Führen Sie den folgenden
kubectl
-Befehl aus, um alle Freigaben aufzurufen:kubectl -n kube-system get lease
Wenn Sie den Status einer bestimmten Freigabe, z. B.
lease/kube-controller-manager
, prüfen möchten, verwenden Sie den folgendenkubectl describe
-Befehl:kubectl -n kube-system describe lease/kube-controller-manager
Prüfen Sie im Abschnitt
Events
, obLeaderElection
-Ereignisse vorhanden sind. Überprüfen Sie, wer die Führung übernimmt und wann das passiert. Die folgende Beispielausgabe zeigt, dass der zweite Knoten sofort die Führung übernimmt, wenn der erste Knoten manuell heruntergefahren wird: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
Sie können auch den Prozess des Verlusts und Gewinns der Führung beobachten, indem Sie den Messwert
kubernetes.io/anthos/leader_election_master_status
verwenden und nachname
gruppieren.
Die Leader-Auswahl erfolgt nur, wenn der aktuelle Leader ausfällt. Sie können den Ausfall bestätigen, indem Sie sich die Messwerte kubernetes.io/anthos/container/uptime
und kubernetes.io/anthos/container/restart_count
ansehen, die nach einem container_name
des kube-controller-manager
gefiltert sind.
Wenn Probleme auftreten, weil der Auswahlvorgang für den Leader wiederholt ausgeführt wird oder fehlschlägt, sehen Sie sich die folgenden Maßnahmen zur Fehlerbehebung an:
- Wenn KCM alle paar Minuten oder kürzer neu gestartet wird, prüfen Sie die KCM-Logs auf fehlgeschlagene Anfragen an den API-Server. Fehlgeschlagene Anfragen weisen auf Verbindungsprobleme zwischen den Komponenten oder auf eine Überlastung eines Teils des Dienstes hin.
- Wenn der Controller-Manager zu lange nicht mit dem API-Server kommunizieren kann, schlägt die Verlängerung fehl und die KCM-Instanz verliert ihre Führung, auch wenn die Verbindung später wiederhergestellt wird.
- Wenn die Steuerungsebene repliziert wird, sollte der neue Leader ohne Ausfallzeit reibungslos übernehmen. Sie müssen nichts weiter tun. Die Steuerungsebene eines Multi-Cloud- oder regionalen Clusters wird immer repliziert. Versuchen Sie nicht, die Auswahl des Leaders für eine replizierte Steuerungsebene zu deaktivieren. Sie können die Auswahl des Leaders nicht ohne Ausfallzeit wieder aktivieren.