Knoten zurücksetzen und Cluster löschen

Wenn ein Google Distributed Cloud-Cluster installiert wird, werden Binärdateien und systemd-Dienste auf den Knoten installiert, die diesen Cluster hosten. Die Dienste beginnen dann, Ports auf den Knoten zu überwachen.

Wenn jedoch die Clusterinstallation fehlschlägt, müssen alle diese Binärdateien und Dienste gelöscht werden. Mit anderen Worten, die Knoten müssen zurückgesetzt oder gelöscht werden, um sie für einen erneuten Installationsversuch des Clusters vorzubereiten. Wenn Knoten nicht auf diese Weise zurückgesetzt werden, schlägt der nächste Versuch fehl, einen Cluster zu installieren.

Auf dieser Seite wird beschrieben, wie Sie bestimmte Knoten bereinigen und einen Cluster löschen.

Löschmethode auswählen

Welche Methode Sie zum Löschen eines Clusters verwenden, hängt von folgenden Faktoren ab:

  • Der Clustertyp.
  • Wenn Sie nur bestimmte Knoten bereinigen und nicht den gesamten Cluster löschen möchten.
  • Wie der Cluster erstellt wurde.

Google Distributed Cloud bietet die folgenden Löschmethoden:

  • Über die Google Cloud Console oder die Google Cloud CLI:

    • Verwenden Sie die Console oder die gcloud CLI, um Nutzercluster zu löschen, die von der GKE On-Prem API verwaltet werden. Ein Nutzercluster wird von der GKE On-Prem API verwaltet, wenn eine der folgenden Bedingungen zutrifft:

  • bmctl:

    • Verwenden Sie bmctl reset nodes, um bestimmte Knoten zurückzusetzen.
    • Verwenden Sie bmctl reset, um die folgenden Clustertypen zu löschen:

      • Administrator-, Hybrid- und eigenständige Cluster, die als selbstverwaltete Cluster bezeichnet werden. Dies gilt auch für Administratorcluster, die von der GKE On-Prem API verwaltet werden.
      • Nutzercluster, die nicht von der GKE On-Prem API verwaltet werden.

    Wenn Sie bmctl verwenden, um Knoten zurückzusetzen oder einen Cluster zu löschen, erwartet der Befehl, dass sich die Clusterkonfigurationsdatei im aktuellen Arbeitsverzeichnis befindet. Standardmäßig sieht der Pfad so aus:

    bmctl-workspace/CLUSTER_NAME/CLUSTER_NAME.yaml

    Wenn Sie das Flag --workspace-dir verwendet haben, um während der Clustererstellung ein anderes Verzeichnis anzugeben, müssen Sie das Flag verwenden, um beim Zurücksetzen des Clusters das Arbeitsverzeichnis anzugeben.

  • kubectl:

    • Verwenden Sie kubectl delete cluster, um nur Nutzercluster zu löschen, die nicht von den GKE On-Prem API-Clustern verwaltet werden. Führen Sie den Befehl nicht für andere Clustertypen aus.
    • Wenn Sie kubectl delete cluster verwenden, müssen Sie nach dem Löschen des Clusters auch den Namespace löschen, in dem sich der Cluster befindet.

Nachdem Sie einen Cluster gelöscht haben, können Sie ihn neu installieren, nachdem Sie die erforderlichen Konfigurationsänderungen vorgenommen haben.

Selbstverwaltete Cluster löschen

Führen Sie den folgenden Befehl aus, um einen Administrator-, Hybrid- oder eigenständigen Cluster zu löschen:

bmctl reset --cluster CLUSTER_NAME

Ersetzen Sie im Befehl CLUSTER_NAME durch den Namen des Clusters, den Sie zurücksetzen möchten.

Die Ausgabe des Befehls bmctl cluster reset sieht in etwa so aus:

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

Der Befehl löscht nicht nur den Cluster, sondern auch die Clustermitgliedschaft aus der Flotte.

Bei Administratorclustern, die von der GKE On-Prem API verwaltet werden, müssen Sie auch die API-Ressourcen in Google Cloud löschen. Andernfalls wird der Cluster in der Google Cloud Console auf der Seite GKE-Cluster angezeigt. Verwenden Sie den folgenden Befehl, um die GKE On-Prem API-Ressourcen für einen Administratorcluster zu löschen:

gcloud container bare-metal admin-clusters unenroll CLUSTER_NAME \
    --project=FLEET_HOST_PROJECT_ID \
    --location=REGION \
    --ignore-errors

Ersetzen Sie Folgendes:

  • FLEET_HOST_PROJECT_ID: Die Projekt-ID der Flotte, in der der Administratorcluster Mitglied war.

  • REGION: Die Google Cloud-Region, in der die GKE On-Prem API Clustermetadaten speichert.

Das Flag --ignore-errors sorgt dafür, dass die Abmeldung einer Bare-Metal-Administratorclusterressource auch dann erfolgreich ist, wenn dabei Fehler auftreten.

Nachdem der Cluster gelöscht wurde, können Sie einen neuen erstellen. Weitere Informationen finden Sie unter Clustererstellung.

Nutzercluster löschen

Wenn der Nutzercluster von der GKE On-Prem API verwaltet wird, löschen Sie den Cluster über die Console oder die gcloud CLI. Andernfalls verwenden Sie bmctl oder kubectl, um den Cluster zu löschen.

bmctl

Mit bmctl können Sie Nutzercluster löschen, die mit bmctl oder kubectl erstellt wurden und nicht bei der GKE On-Prem API registriert sind.

Führen Sie den folgenden Befehl aus, um einen Nutzercluster mit bmctl zu löschen:

bmctl reset --cluster USER_CLUSTER_NAME --admin-kubeconfig ADMIN_KUBECONFIG_PATH

Ersetzen Sie im Befehl die folgenden Einträge durch Informationen, die für Ihre Clusterumgebung spezifisch sind:

  • USER_CLUSTER_NAME: der Name des Nutzerclusters, den Sie löschen möchten.

  • ADMIN_KUBECONFIG_PATH: der Pfad zur Datei kubeconfig des verknüpften Administratorclusters. bmctl unterstützt die Verwendung von --kubeconfig als Alias für das Flag --admin-kubeconfig.

Die Ausgabe des Befehls bmctl cluster reset sieht in etwa so aus:

Please check the logs at bmctl-workspace/example-cluster-1/log/reset-20221025-184705/reset.log
[2022-10-25 18:47:11+0000] Creating bootstrap cluster... OK
[2022-10-25 18:48:18+0000] Loading images... OK
[2022-10-25 18:48:18+0000] Waiting for reset jobs to finish...
[2022-10-25 18:48:28+0000] Operation reset in progress: 1       Completed: 0    Failed: 0
...
[2022-10-25 18:50:08+0000] Operation reset in progress: 0       Completed: 1    Failed: 0
[2022-10-25 18:50:08+0000] Flushing logs... OK
[2022-10-25 18:50:08+0000] Deleting GKE Hub member example-cluster-1 in project example-project-12345...
[2022-10-25 18:50:11+0000] Successfully deleted GKE Hub member example-cluster-1 in project example-project-12345
[2022-10-25 18:50:11+0000] Deleting bootstrap cluster... OK

kubectl

Sie können kubectl verwenden, um Nutzercluster zu löschen, die mit bmctl oder kubectl erstellt wurden und nicht bei der GKE On-Prem API registriert sind. Wenn Sie einen Nutzercluster mit kubectl löschen möchten, müssen Sie zuerst das Clusterobjekt und dann seinen Namespace löschen. Andernfalls können die Jobs zum Zurücksetzen der Maschinen nicht erstellt werden und der Löschvorgang bleibt möglicherweise auf unbestimmte Zeit hängen.

So löschen Sie einen Nutzercluster mit kubectl:

  1. Führen Sie den folgenden Befehl aus, um das Clusterobjekt zu löschen:

    kubectl delete cluster USER_CLUSTER_NAME -n USER_CLUSTER_NAMESPACE \
        --kubeconfig ADMIN_KUBECONFIG_PATH
    

    Ersetzen Sie im Befehl die folgenden Einträge durch Informationen, die für Ihre Clusterumgebung spezifisch sind:

    • USER_CLUSTER_NAME: der Name des Nutzerclusters, den Sie löschen möchten.

    • USER_CLUSTER_NAMESPACE: der Namespace für den Cluster. Standardmäßig sind die Cluster-Namespaces für Google Distributed Cloud der Name des Clusters, dem cluster- vorangestellt wird. Wenn Sie Ihren Cluster beispielsweise test nennen, hat der Namespace einen Namen wie cluster-test.

    • ADMIN_KUBECONFIG_PATH: der Pfad zur Datei kubeconfig des verknüpften Administratorclusters.

  2. Führen Sie nach dem erfolgreichen Löschen des Clusters den folgenden Befehl aus, um den Namespace zu löschen:

    kubectl delete namespace USER_CLUSTER_NAMESPACE --kubeconfig ADMIN_KUBECONFIG_PATH
    

Console

Wenn der Nutzercluster von der GKE On-Prem API verwaltet wird, führen Sie die folgenden Schritte aus, um ihn zu löschen:

  1. Rufen Sie in der Console die Übersichtsseite für Google Kubernetes Engine-Cluster auf.

    Zu GKE-Clustern

  2. Wählen Sie das Google Cloud-Projekt aus, in dem sich der Nutzercluster befindet.

  3. Klicken Sie in der Liste der Cluster auf den Cluster, den Sie löschen möchten.

  4. Suchen Sie in der Liste der Cluster den Cluster, den Sie löschen möchten. Wenn der Typ external ist, bedeutet dies, dass der Cluster mit bmctl erstellt und nicht bei der GKE On-Prem API registriert wurde. Führen Sie in diesem Fall die Schritte auf dem Tab bmctl oder kubectl aus, um den Cluster zu löschen.

    Wenn das Symbol in der Spalte Status auf ein Problem hinweist, führen Sie die Schritte auf dem Tab „gcloud CLI“ aus, um den Cluster zu löschen. Sie müssen dem Löschbefehl das Flag --ignore-errors hinzufügen.

  5. Klicken Sie auf den Namen des Clusters, den Sie löschen möchten.

  6. Klicken Sie oben im Fenster Details auf Löschen.

  7. Wenn Sie zur Bestätigung aufgefordert werden, geben Sie den Namen des Clusters ein und klicken Sie auf Entfernen.

gcloud-CLI

Wenn der Nutzercluster von der GKE On-Prem API verwaltet wird, führen Sie die folgenden Schritte aus, um den Cluster auf einem Computer zu löschen, auf dem die gcloud CLI installiert ist:

  1. Melden Sie sich mit Ihrem Google-Konto an:

    gcloud auth login
    
  2. Aktualisieren Sie die Komponenten:

    gcloud components update
    
  3. Rufen Sie eine Liste der Cluster ab, um sicherzustellen, dass Sie im Löschbefehl den richtigen Clusternamen angeben:

    gcloud container bare-metal clusters list \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION
    

    Ersetzen Sie Folgendes:

    • FLEET_HOST_PROJECT_ID: Die ID des Projekts, in dem der Cluster erstellt wurde.

    • LOCATION: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.

    Die Ausgabe sieht in etwa so aus:

    NAME                      LOCATION    VERSION         ADMIN_CLUSTER            STATE
    example-user-cluster-1a   us-west1    1.29.100-gke.251          example-admin-cluster-1  RUNNING
    
  4. Führen Sie den folgenden Befehl aus, um den Cluster zu löschen:

    gcloud container bare-metal clusters delete USER_CLUSTER_NAME \
      --project=FLEET_HOST_PROJECT_ID \
      --location=LOCATION \
      --force \
      --allow-missing
    

    Ersetzen Sie Folgendes:

    • USER_CLUSTER_NAME: Der Name des Nutzerclusters, der gelöscht werden soll.

    • FLEET_HOST_PROJECT_ID: Die ID des Projekts, in dem der Cluster erstellt wurde.

    • LOCATION: Der Google Cloud-Standort, der dem Nutzercluster zugeordnet ist.

    Mit dem Flag --force können Sie einen Cluster löschen, der Knotenpools hat. Ohne das Flag --force müssen Sie zuerst die Knotenpools löschen und dann den Cluster löschen.

    Das Flag --allow-missing ist ein Google API-Standard-Flag. Wenn Sie dieses Flag hinzufügen, gibt der Befehl Erfolg zurück, wenn der Cluster nicht gefunden wird.

    Wenn der Befehl einen Fehler zurückgibt, der den Text failed connecting to the cluster's control plane enthält, weist dies auf Verbindungsprobleme mit dem Administratorcluster, dem Connect-Agent oder der lokalen Umgebung hin. Informationen zur Behebung von Problemen mit dem Connect-Agent finden Sie unter Connect-Agent-Logs erfassen.

    • Wenn Sie den Eindruck haben, dass das Verbindungsproblem vorübergehend ist, z. B. aufgrund von Netzwerkproblemen, warten Sie und wiederholen Sie den Befehl.

    • Wenn Sie wissen, dass der Administratorcluster gelöscht wurde oder die Knotenmaschinen für den Administrator oder den Nutzercluster heruntergefahren oder offline genommen wurden, fügen Sie das Flag --ignore-errors hinzu und wiederholen Sie den Befehl.

      Sie müssen auch --ignore-errors angeben, wenn der Cluster mit bmctl oder kubectl gelöscht wurde. Dadurch bleiben die GKE On-Prem API-Ressourcen in Google Cloud. Ein Symptom ist, dass der Cluster in der Console auf der Seite GKE-Cluster immer noch fehlerhaft angezeigt wird.

Informationen zu anderen Flags finden Sie in der Referenz zur gcloud CLI.

Bestimmte Clusterknoten zurücksetzen

Möglicherweise möchten Sie bestimmte Knoten eines Clusters zurücksetzen, wenn beispielsweise ein Administratorcluster gelöscht wurde, aber die Nutzercluster, die von diesem Administratorcluster verwaltet werden, bestehen bleiben. In diesem Fall können die Nutzercluster als Ganzes nicht gelöscht werden, da der Administratorcluster gelöscht wurde. Daher müssen die Knoten der Nutzercluster einzeln zurückgesetzt werden.

Zum Zurücksetzen von Knoten benötigen Sie ein Dienstkonto mit Lesezugriff auf die Google Container Registry (GCR). Der Befehl bmctl erwartet die JSON-Schlüsseldatei für dieses Dienstkonto als Argument. Führen Sie den folgenden Befehl aus, um einzelne Knoten eines Clusters zurückzusetzen:

bmctl reset nodes --addresses NODE_1_IP_ADDRESS,NODE_2_IP_ADDRESS \
    --ssh-private-key-path SSH_KEY_PATH \
    --gcr-service-account-key SERVICE_ACCOUNT_KEY_PATH \
    --login-user root

Ersetzen Sie im Befehl die folgenden Einträge durch Informationen, die für Ihre Clusterumgebung spezifisch sind:

  • NODE_1_IP_ADDRESS , NODE_2_IP_ADDRESS: eine durch Kommas getrennte Liste von IP-Adressen der Knoten, die Sie löschen möchten.

  • SSH_KEY_PATH: Pfad zum privaten SSH-Schlüssel. Mit diesem Schlüssel werden während des Zurücksetzens SSH-Verbindungen zu Knoten hergestellt.

  • SERVICE_ACCOUNT_KEY_PATH: Pfad zur JSON-Datei, die den Dienstkontoschlüssel enthält. Mit diesem Schlüssel erhält bmctl die Berechtigung, Images aus der Google Container Registry abzurufen. Sie können einen Dienstkontoschlüssel über die Console oder die gcloud CLI erstellen. Weitere Informationen finden Sie unter Dienstkontoschlüssel erstellen und verwalten. Eine andere Möglichkeit zum Erstellen der Dienstkonto-Schlüsseldatei besteht darin, den Befehl create config mit dem Flag --create-service-accounts auszuführen. Weitere Informationen zu diesem Befehl finden Sie unter Clusterkonfiguration mit bmctl erstellen und verwalten.

Details zum Löschen von Clustern

Beim Löschen werden die Registrierung der Flottenmitgliedschaft des Clusters, Speicherbereitstellungen und Daten aus dem anthos-system StorageClass gelöscht.

Bei allen Knoten werden die für das Clusternetzwerk verwendeten Tunnelschnittstellen entfernt und die folgenden Verzeichnisse gelöscht:

  • /etc/kubernetes
  • /etc/cni/net.d
  • /root/.kube
  • /var/lib/kubelet

Für Load-Balancer-Knoten:

  • Die Dienste keepalived und haproxy werden gelöscht.
  • Die Konfigurationsdateien für keepalived und haproxy werden gelöscht.