Fehlerbehebung für den Kubernetes-Controller-Manager

Auf diesen Seiten erfahren Sie, wie Sie Probleme mit dem Kubernetes Controller Manager (kube-controller-manager) für Google Distributed Cloud beheben.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.

Verlorene Leader-Wahl

Dieser Fehler kann in einem regionalen Cluster oder einer replizierten Steuerungsebene auftreten, wenn kube-controller-manager (KCM) unerwartet neu gestartet wird. Dieser Neustart kann dazu führen, dass er beendet oder von kubelet neu gestartet wird. Die KCM-Logs können leaderelection lost-Nachrichten enthalten.

Dieses Szenario kann eintreten, wenn der Leader prüft, ob er immer noch aktiv als Teil der KCM-Systemdiagnose geführt wird.

Wenn der Leader nicht mehr führt oder die Freigabeprüfung fehlschlägt, meldet die Systemdiagnose einen Fehler und wird neu gestartet.

Der Leader-Wahlstatus kann durch Abrufen der Lease-Ressourcen der Gruppe coordination.k8s.io abgerufen werden:

  1. Führen Sie den folgenden kubectl-Befehl aus, um alle Freigaben anzusehen:

    kubectl -n kube-system get lease
    
  2. Verwenden Sie den folgenden kubectl describe-Befehl, um den Status einer bestimmten Freigabe, z. B. lease/kube-controller-manager, zu prüfen:

    kubectl -n kube-system describe lease/kube-controller-manager
    

    Suchen Sie im Abschnitt Events nach LeaderElection-Ereignissen. Überprüfen Sie, wer wann die Führung übernimmt. Die folgende Beispielausgabe zeigt, dass beim manuellen Herunterfahren des ersten Knotens sofort der zweite Knoten die Führungsebene übernimmt:

    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
    

    Mithilfe des nach name gruppierten Messwerts kubernetes.io/anthos/leader_election_master_status können Sie auch den Prozess des Verlusts und des Gewinns der Führung beobachten.

Die Auswahl des Leaders erfolgt nur, wenn der aktuelle Leader nicht erfolgreich ist. Sie können den Fehler prüfen, indem Sie sich die Messwerte kubernetes.io/anthos/container/uptime und kubernetes.io/anthos/container/restart_count ansehen, gefiltert nach einem container_name von kube-controller-manager.

Wenn wiederholt Probleme bei der Auswahl des Leaders auftreten oder sie fehlschlagen, sehen Sie sich die folgenden Hinweise zur Abhilfe an:

  • Wenn KCM alle paar Minuten oder seltener neu gestartet wird, prüfen Sie die KCM-Logs auf fehlgeschlagene Anfragen an den API-Server. Fehlgeschlagene Anfragen weisen darauf hin, dass Verbindungsprobleme zwischen den Komponenten oder einem Teil des Dienstes überlastet sind.
  • 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ührungsposition, auch wenn die Verbindung später wiederhergestellt wird.
  • Wenn die Steuerungsebene repliziert wird, sollte der neue Leader problemlos und ohne Ausfallzeiten übernehmen. Sie müssen nichts weiter tun. Die Steuerungsebene eines Multi-Cloud- oder regionalen Clusters wird immer repliziert. Versuchen Sie nicht, die Leader-Auswahl für eine replizierte Steuerungsebene zu deaktivieren. Ohne Ausfallzeit können Sie die Wahl des Leaders nicht wieder aktivieren.

Nächste Schritte

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care.