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.

Wenn Sie einem Cluster Knoten hinzufügen oder daraus entfernen möchten, ohne dass ein Knoten ausgefallen ist, lesen Sie den Abschnitt Cluster aktualisieren.

Knoten zurücksetzen

Wenn ein Knoten ausfällt, können Sie manchmal keine Befehle zum Zurücksetzen auf den Knoten ausführen, da der Knoten möglicherweise 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 ähnlich wie bei kubeadm reset zurückgesetzt 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 Zurücksetzungsbefehle (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 fehlerhaften Knoten enthält.
    • ADMIN_KUBECONFIG: der Pfad zur Datei kubeconfig des Administratorclusters an.

    Wenn dieser Befehl erfolgreich ausgeführt wird, können Sie den Knoten jetzt diagnostizieren und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben. Überspringen Sie die restlichen Schritte in diesem Abschnitt.

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

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

    Sie können den Knoten jetzt diagnostizieren 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
    

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. Um wieder einen HA-Status zu erreichen, 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 fehlerhaften Knoten enthält.
    • ADMIN_KUBECONFIG: der Pfad zur Datei kubeconfig des Administratorclusters an.

    Wenn dieser Befehl erfolgreich ausgeführt wird, können Sie den Knoten jetzt diagnostizieren und alle Fehlkonfigurationen beheben, die den ursprünglichen Fehler verursacht haben. Überspringen Sie die restlichen 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 diesem erzwungenen Entfernen wird der vorherige Schritt übersprungen, in dem die Zurücksetzungsbefehle ausgeführt werden. Es wird nur der Schritt zum Entfernen der zugehörigen Verweise auf den Knoten aus den benutzerdefinierten Ressourcen des Knotenpools und des Clusters ausgeführt:

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

    Sie können den Knoten jetzt diagnostizieren 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
    

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

    Mit dem folgenden Befehl können Sie eine Maschine auf den vorinstallierten Zustand zurücksetzen, wenn die Clustersteuerungsebene 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 zur Datei mit dem privaten SSH-Schlüssel.

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

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

Mit diesem Befehl werden keine Verweise auf den Knoten aus den benutzerdefinierten Ressourcen für Knotenpool und Cluster entfernt. Nachdem Sie den Zugriff auf die Clustersteuerungsebene wiederhergestellt haben, sollten Sie den Knoten aus dem Cluster entfernen, 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 Fehlerstatus wechseln, verliert der Cluster das Quorum und wird nicht mehr verfügbar.

Wenn Sie Verwaltungscluster wiederherstellen müssen, geben Sie die Datei kubeconfig 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 Datei kubeconfig 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 fehlerhaften 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 fehlerhaften 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.

Bei diesem Prozess wird nur die Notfallwiederherstellung für eine HA-Bereitstellung der Steuerungsebene mit drei Knoten behandelt. Die Wiederherstellung für HA-Einrichtungen mit mindestens fünf Knoten wird bei diesem Vorgang nicht unterstützt.

Nächste Schritte

Weitere Informationen zum Hinzufügen oder Entfernen von Knoten aus einem Cluster ohne Fehler 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. Weitere Informationen zu Supportressourcen finden Sie unter Support. Dazu gehören:

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