Einen ausgefallenen Knoten in Google Distributed Cloud zurücksetzen

Wenn Knoten in der Google Distributed Cloud ausfallen, was auf Probleme mit dem Speicher, dem Netzwerk oder einer Fehlkonfiguration des Betriebssystems zurückzuführen sein kann, müssen Sie den Clusterstatus effizient wiederherstellen. Nachdem Sie den Clusterstatus wiederhergestellt haben, können Sie den Knotenfehler beheben. In diesem Dokument erfahren Sie, wie Sie eine Wiederherstellung nach Knotenfehler-Szenarien erreichen, indem Sie einen Knoten zurücksetzen und bei Bedarf erzwingen können, ihn zu entfernen.

Informationen zum Hinzufügen oder Entfernen von Knoten aus einem Cluster, wenn kein Knoten ausgefallen ist, finden Sie unter Cluster aktualisieren.

Knoten zurücksetzen

Wenn Knoten in der Google Distributed Cloud aufgrund von Hardwarefehlern, Festplattenbeschädigungen oder Betriebssystemproblemen ausfallen, müssen Sie den Clusterstatus wiederherstellen, bevor Sie Fehler an der zugrunde liegenden Maschine beheben.

Architektur der Knotenwiederherstellung

Physische Knoten in der Google Distributed Cloud sind als Einweg-Infrastruktureinheiten konzipiert. Wenn das Betriebssystem eines Knotens beschädigt ist, müssen Sie den Knoten ordnungsgemäß aus dem Cluster entfernen, ein neues Linux-Basisbetriebssystem installieren und den Knoten wieder dem Cluster hinzufügen.

Versuchen Sie nicht, einen Knoten aus einer Sicherung des Betriebssystems auf Hostebene oder einem Festplattensnapshot wiederherzustellen. Wenn Sie einen Knoten aus einem früheren Betriebssystemstatus wiederherstellen, wird der Raft-Konsens auf den Knoten der Steuerungsebene beschädigt und es kommt zu IP-Adressenkollisionen von Dataplane V2 auf den Worker-Knoten. Weitere Informationen zu Einschränkungen bei der Sicherung und Notfallwiederherstellung finden Sie unter Cluster mit bmctl sichern und wiederherstellen.

Wenn ein Knoten ausfällt, können Sie manchmal keine Befehle zum Zurücksetzen auf den Knoten ausführen, wenn der Knoten nicht erreichbar ist. Möglicherweise müssen Sie das Entfernen des Knotens aus dem Cluster erzwingen.

Wenn Sie einen Knoten ordnungsgemäß zurücksetzen und den Cluster aktualisieren, geschehen folgende Aktionen:

  1. Der Knoten wird zurückgesetzt, ähnlich wie bei kubeadm reset, und die Maschine wird in den vorinstallierten Zustand zurückversetzt.
  2. Die zugehörigen Verweise auf den Knoten werden aus den benutzerdefinierten Ressourcen des Knotenpools und des Clusters entfernt.

In einigen der folgenden bmctl-Befehle zum Zurücksetzen von Knoten gibt der Parameter --force an, ob die Befehle zum Zurücksetzen (Schritt 1) übersprungen werden sollen. Wenn der Parameter --force verwendet wird, führt bmctl nur den Schritt zum Entfernen (Schritt 2) aus und die Befehle zum Zurücksetzen nicht.

Worker-Knoten entfernen

So entfernen Sie einen Worker-Knoten aus einem Cluster:

  1. Versuchen Sie, den Knoten ordnungsgemäß zurückzusetzen. Nachdem der Knoten zurückgesetzt wurde, wird er aus dem Cluster entfernt:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Ersetzen Sie Folgendes:

    • COMMA_SEPARATED_IP: die IP-Adressen der zurückzusetzenden Knoten, z. B. 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: der Name des Zielclusters, der die ausgefallenen Knoten enthält.
    • ADMIN_KUBECONFIG: der Pfad zur Datei kubeconfig des Administratorclusters an.

    Wenn dieser Befehl erfolgreich ausgeführt wird, können Sie jetzt eine Diagnose des Knotens durchführen und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben. Überspringen Sie die verbleibenden Schritte in diesem Abschnitt.

  2. Wenn der vorherige Schritt zum Zurücksetzen des Knotens fehlschlägt, erzwingen Sie seine Entfernung aus dem Cluster. Bei dieser erzwungenen Entfernung wird der vorherige Schritt übersprungen, in dem die Befehle zum Zurücksetzen ausgeführt werden. Es wird nur der Schritt ausgeführt, in dem die zugehörigen Verweise auf den Knoten aus den benutzerdefinierten Ressourcen des Knotenpools und des Clusters entfernt werden:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG \
        --force
    

    Sie können jetzt eine Diagnose des Knotens durchführen und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben.

  3. Wenn Sie das Entfernen des Knotens aus dem Knotencluster im vorherigen Schritt erzwungen haben, führen Sie den Befehl bmctl reset noch einmal aus, um die Knoten zurückzusetzen:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

Wenn das zugrunde liegende Betriebssystem auf der Maschine beschädigt oder nicht wiederherstellbar ist:

  1. Löschen Sie die lokalen Speicherlaufwerke der Maschine.
  2. Installieren Sie ein neues, unterstütztes Linux-Betriebssystem und konfigurieren Sie die Knotenanforderungen , die unter Anforderungen an die Betriebssystemkonfiguration und Voraussetzungen für Workstations und Knotenbeschrieben sind.
  3. Fügen Sie den fehlerfreien Knoten wieder dem Cluster hinzu. Folgen Sie dazu der Anleitung unter Cluster aktualisieren.

Einzelnen Knoten der Steuerungsebene entfernen

Der Vorgang ist derselbe wie für Worker-Knoten. Bei Knoten der Steuerungsebene bereinigt bmctl auch die etcd-Mitgliedschaft.

Der Cluster ist nicht mehr in einem Zustand der Hochverfügbarkeit (HA), nachdem Sie den ausgefallenen Knoten entfernt haben. Wenn Sie wieder einen HA-Zustand erreichen möchten, fügen Sie dem Cluster einen fehlerfreien Knoten hinzu.

So entfernen Sie einen Knoten aus einem Cluster:

  1. Versuchen Sie, den Knoten ordnungsgemäß zurückzusetzen. Nachdem der Knoten zurückgesetzt wurde, wird er aus dem Cluster entfernt:

    bmctl reset nodes \
        --addresses COMMA_SEPARATED_IPS \
        --cluster CLUSTER_NAME \
        --kubeconfig ADMIN_KUBECONFIG
    

    Ersetzen Sie die folgenden Werte:

    • COMMA_SEPARATED_IP: die IP-Adressen der zurückzusetzenden Knoten, z. B. 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: der Name des Zielclusters, der die ausgefallenen Knoten enthält.
    • ADMIN_KUBECONFIG: der Pfad zur Datei kubeconfig des Administratorclusters an.

    Wenn dieser Befehl erfolgreich ausgeführt wird, können Sie jetzt eine Diagnose des Knotens durchführen und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben. Überspringen Sie die verbleibenden Schritte in diesem Abschnitt.

  2. Wenn der vorherige Schritt zum Zurücksetzen des Knotens fehlschlägt, können Sie seine Entfernung aus dem Cluster erzwingen. Bei dieser erzwungenen Entfernung wird der vorherige Schritt übersprungen, in dem die Befehle zum Zurücksetzen ausgeführt werden. Es wird nur der Schritt ausgeführt, in dem die zugehörigen Verweise auf den Knoten aus den benutzerdefinierten Ressourcen des Knotenpools und des Clusters entfernt werden:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG \
      --force
    

    Sie können jetzt eine Diagnose des Knotens durchführen und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben.

  3. Wenn Sie das Entfernen des Knotens aus dem Knotencluster im vorherigen Schritt erzwungen haben, führen Sie den Befehl bmctl reset noch einmal aus, um die Knoten zurückzusetzen:

    bmctl reset nodes \
      --addresses COMMA_SEPARATED_IPS \
      --cluster CLUSTER_NAME \
      --kubeconfig ADMIN_KUBECONFIG
    

Wenn das zugrunde liegende Betriebssystem auf der Maschine beschädigt oder nicht wiederherstellbar ist:

  1. Löschen Sie die lokalen Speicherlaufwerke der Maschine.
  2. Installieren Sie ein neues, unterstütztes Linux-Betriebssystem und konfigurieren Sie die Knotenanforderungen , die unter Anforderungen an die Betriebssystemkonfiguration und Voraussetzungen für Workstations und Knotenbeschrieben sind.
  3. Fügen Sie den fehlerfreien Knoten wieder dem Cluster hinzu. Folgen Sie dazu der Anleitung unter Cluster aktualisieren.

Knoten zurücksetzen, wenn die Steuerungsebene nicht zugänglich ist

Mit dem folgenden Befehl können Sie eine Maschine in den vorinstallierten Zustand zurückversetzen, wenn die Cluster-Steuerungsebene nicht zugänglich ist:

bmctl reset nodes \
    --addresses NODE_IP_ADDRESSES \
    --ssh-private-key-path SSH_PRIVATE_KEY_PATH \
    --login-user LOGIN_USER \
    --gcr-service-account-key AR_SERVICE_ACCOUNT_KEY

Ersetzen Sie Folgendes:

  • NODE_IP_ADDRESSES: eine durch Kommas getrennte Liste von Knoten-IP-Adressen, eine für jeden Knoten, den Sie zurücksetzen.

  • SSH_PRIVATE_KEY_PATH: der Pfad der privaten SSH-Schlüsseldatei.

  • LOGIN_USER: der Nutzername, der für den passwortlosen SUDO-Zugriff auf die Knotenmaschinen verwendet wird. Sofern Sie in der Clusterkonfiguration (nodeAccess.loginUser) nicht explizit einen Nicht-Root-Nutzernamen für den Knotenzugriff angeben, wird root verwendet.

  • AR_SERVICE_ACCOUNT_KEY: der Pfad der JSON-Schlüsseldatei des Artifact Registry-Dienstkontos.

Mit diesem Befehl werden keine Verweise auf den Knoten aus den benutzerdefinierten Ressourcen des Knotenpools und des Clusters entfernt. Nachdem Sie den Zugriff auf die Cluster-Steuerungsebene wiederhergestellt haben, sollten Sie das Entfernen des Knotens aus dem Cluster erzwingen, wenn Sie den Cluster beibehalten möchten.

Quorum in der HA-Steuerungsebene verloren

Wenn zu viele Knoten der Steuerungsebene in einem HA-Cluster in einen Fehlerzustand geraten, verliert der Cluster das Quorum und ist nicht mehr verfügbar.

Wenn Sie Verwaltungscluster wiederherstellen müssen, geben Sie die kubeconfig-Datei nicht in den Befehlen zum Zurücksetzen an. Wenn Sie die Datei kubeconfig für einen Verwaltungscluster angeben, erzwingt dieser, dass ein neuer Cluster den Vorgang zum Zurücksetzen ausführt. Wenn Sie einen Nutzercluster wiederherstellen, geben Sie den Pfad zur kubeconfig-Datei an.

  1. Führen Sie den folgenden Befehl auf einem übrigen fehlerfreien Knoten aus, um einen Cluster wiederherzustellen, der das Quorum verloren hat:

    bmctl restore --control-plane-node CONTROL_PLANE_NODE \
        --cluster CLUSTER_NAME \
        [--kubeconfig KUBECONFIG_FILE]
    

    Ersetzen Sie Folgendes:

    • CONTROL_PLANE_NODE: die IP-Adressen eines fehlerfreien Knotens, der Teil des Clusters bleibt.
    • CLUSTER_NAME: der Name des Zielclusters, der die ausgefallenen Knoten enthält.
    • KUBECONFIG_FILE: bei der Wiederherstellung eines Nutzerclusters der Pfad zur kubeconfig-Datei des Nutzerclusters.
  2. Nachdem Sie die ausgefallenen Knoten wiederhergestellt haben, führen Sie den Befehl bmctl reset aus, um die Knoten zurückzusetzen:

    bmctl reset nodes \
       --addresses COMMA_SEPARATED_IPS \
       --cluster CLUSTER_NAME \
       [--kubeconfig KUBECONFIG_FILE]
    

    Ersetzen Sie Folgendes:

    • COMMA_SEPARATED_IP: die IP-Adressen der zurückzusetzenden Knoten, z. B. 10.200.0.8,10.200.0.9.
    • CLUSTER_NAME: der Name des Zielclusters, der die ausgefallenen Knoten enthält.
    • KUBECONFIG_FILE: der Pfad zur Datei kubeconfig des Administratorclusters an.

    Wenn die ausgefallenen Knoten zu den Load Balancer-Knotenpools gehörten, könnten sie nach der Wiederherstellung der Knoten um die virtuelle IP-Adresse der Steuerungsebene konkurrieren und den neuen Cluster instabil machen. Führen Sie die Befehle zum Zurücksetzen an den ausgefallenen Knoten so bald wie möglich nach der Wiederherstellung der Knoten aus.

Dieser Vorgang behandelt nur die Notfallwiederherstellung für eine HA-Bereitstellung der Steuerungsebene mit drei Knoten. Dieser Vorgang unterstützt nicht die Wiederherstellung für HA-Setups mit fünf oder mehr Knoten.

Versehentliche Wiederherstellung eines Betriebssystem-Images beheben

Wenn ein physischer Knoten aus einer Sicherung oder einem Snapshot des Betriebssystems wiederhergestellt wurde und Clusterinstabilität, etcd-Konsensfehler oder Dataplane V2-IP-Kollisionen verursacht, führen Sie die folgenden Schritte aus, um den Clusterstatus wiederherzustellen:

  1. Trennen Sie den betroffenen Knoten sofort oder fahren Sie ihn herunter, um eine weitere Beschädigung des Clusterstatus zu verhindern.
  2. Führen Sie auf der Administrator-Workstation den Befehl bmctl reset nodes --force aus, um die benutzerdefinierten Ressourcen des Knotens aus dem Cluster zu entfernen.
  3. Löschen Sie die physischen Laufwerke auf der Maschine.
  4. Installieren Sie ein sauberes Linux-Basisbetriebssystem gemäß den Anforderungen an die Betriebssystemkonfiguration.
  5. Fügen Sie den Knoten wieder dem Cluster hinzu. Folgen Sie dazu der Anleitung unter Cluster aktualisieren.

Nächste Schritte

Weitere Informationen zum Hinzufügen oder Entfernen von Knoten aus einem Cluster, wenn kein Fehler vorliegt, und zum Prüfen des Knotenstatus finden Sie unter Cluster aktualisieren.

Wenn Sie weitere Unterstützung benötigen, wenden Sie sich an den Cloud Customer Care. Unter Support erhalten finden Sie weitere Informationen zu Supportressourcen, einschließlich der folgenden:

  • Anforderungen für das Eröffnen eines Supportfalls.
  • Tools zur Fehlerbehebung, z. B. Ihre Umgebungskonfiguration, Logs und Messwerte.
  • Unterstützte Komponenten.