Neustarten und Löschen von Clustern

In diesem Thema wird erläutert, wie Sie Arbeitslastcluster herunterfahren und neu starten und wie Sie sie löschen.

Herunterfahren und Neustarten von Arbeitslastclustern

Möglicherweise müssen Sie Arbeitslastcluster herunterfahren und neu starten, um geplante Ausfälle für Netzwerkwartung oder geplante Netzwerkausfallzeiten zu berücksichtigen.

Voraussetzungen

  • Die DHCP-Lease und -Reservierung für alle Clusterknoten in allen Netzwerken müssen länger als der geplante Ausfall sein.
    • Dadurch wird sichergestellt, dass die Knoten nach dem Neustart dieselben Adressen beibehalten, was erforderlich ist.
  • jq lokal installiert.
  • Sichern von NSX Manager.

Vorgehensweise

  1. Führen Sie den folgenden Befehl aus, um Informationen zu Ihrer etcd-Datenbank zu erfassen:

    kubectl --kubeconfig /etc/kubernetes/admin.conf get pods `kubectl --kubeconfig /etc/kubernetes/admin.conf  get pods -A | grep etc | awk '{print $2}'` -n kube-system  -o=jsonpath='{.spec.containers[0].command}' | jq
    

    Beispielausgabe:

    [
      "etcd",
      "--advertise-client-urls=https://192.168.7.154:2379",
      "--cert-file=/etc/kubernetes/pki/etcd/server.crt",
      "--client-cert-auth=true",
      "--data-dir=/var/lib/etcd",
      "--initial-advertise-peer-urls=https://192.168.7.154:2380",
      "--initial-cluster=workload-vsphere-tkg2-control-plane-fk5hw=https://192.168.7.154:2380",
      "--key-file=/etc/kubernetes/pki/etcd/server.key",
      "--listen-client-urls=https://127.0.0.1:2379,https://192.168.7.154:2379",
      "--listen-metrics-urls=http://127.0.0.1:2381",
      "--listen-peer-urls=https://192.168.7.154:2380",
      "--name=workload-vsphere-tkg2-control-plane-fk5hw",
      "--peer-cert-file=/etc/kubernetes/pki/etcd/peer.crt",
      "--peer-client-cert-auth=true",
      "--peer-key-file=/etc/kubernetes/pki/etcd/peer.key",
      "--peer-trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt",
      "--snapshot-count=10000",
      "--trusted-ca-file=/etc/kubernetes/pki/etcd/ca.crt"
    ]
    
  2. Für jeden Knoten der Steuerungsebene:

    1. Führen Sie den ssh-Befehl aus, um sich beim Knoten anzumelden.

    2. Führen Sie den folgenden Befehl aus, um nach der zugehörigen ausführbaren etcdctl-Datei zu suchen.

      find / -type f -name "*etcdctl*" -print
      

      Beispielausgabe:

       /run/containerd/io.containerd.runtime.v1.linux/k8s.io/823581f975804b65048f4babe2015a95cfa7ed6f767073796afe47b9d03299fb/rootfs/usr/local/bin/etcdctl`
       /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl
      
    3. Erstellen Sie eine etcd-Sicherungsdatei und überprüfen Sie sie.

      1. Führen Sie den folgenden Befehl aus:

        ETCD-EXE snapshot save LOCAL-BACKUP --endpoints=ENDPOINTS --cacert=CA --cert=CERT --key=KEY
        

        Dabei gilt:

        • ETCD-EXE ist der lokale Pfad zur ausführbaren etcdctl-Datei
        • LOCAL-BACKUP ist die lokale Datei, in der gesichert werden soll, z. B. /tmp/etcdBackup1.db
        • ENDPOINTS, CA, CERT und KEY sind die oben aufgezeichneten Werte für --advertise-client-urls, --peer-trusted-ca-file, --cert-file und --key-file

        Beispiel:

        /var/lib/containerd/io.containerd.snapshotter.v1.overlayfs/snapshots/19/fs/usr/local/bin/etcdctl snapshot save /tmp/etcdBackup1.db \
         --endpoints=https://192.168.7.154:2379 \
         --cacert=/etc/kubernetes/pki/etcd/ca.crt \
         --cert=/etc/kubernetes/pki/etcd/server.crt \
         --key=/etc/kubernetes/pki/etcd/server.key
        
        1. Überprüfen Sie, dass die Sicherungsdatei erstellt wurde:

          ls -l  LOCAL-BACKUP
          
        2. Überprüfen Sie den Sicherungsinhalt, indem Sie einen Snapshot der Datei generieren:

          ETCD-EXE --write-out=table snapshot status LOCAL-BACKUP
          
  3. Führen Sie auf Ihrer Bootstrap-Maschine die folgende Befehlssequenz aus, um Clusterinformationen zu erfassen und in einer Datei zu speichern:

      tanzu cluster list -A > CLUSTER-INFO-1
      kubectl config get-contexts >> CLUSTER-INFO-1
      kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-1
      kubectl get nodes -o wide >> CLUSTER-INFO-1
      cat CLUSTER-INFO-1
    

    Dabei ist CLUSTER-INFO-1 eine lokale Textdatei, in der die Informationen gespeichert werden sollen, z. B. /tmp/SaveClusterInfo1.txt.

  4. Entleeren Sie alle Anwendungen auf den Worker-Knoten.

  5. Beenden Sie alle virtuellen Maschinen in vCenter in der folgenden Reihenfolge:

    1. Fahren Sie Knoten der Steuerungsebene des Verwaltungsclusters herunter.
    2. Fahren Sie Worker-Knoten des Verwaltungsclusters herunter.
    3. Fahren Sie Knoten der Steuerungsebene des Arbeitslastclusters herunter.
    4. Fahren Sie Worker-Knoten des Arbeitslastclusters herunter.
  6. Starten Sie alle virtuellen Maschinen auf vCenter in der folgenden Reihenfolge neu:

    1. Starten Sie die Knoten der Steuerungsebene des Arbeitslastclusters.
    2. Starten Sie die Worker-Knoten des Arbeitslastclusters.
    3. Starten Sie die Knoten der Steuerungsebene des Verwaltungsclusters.
    4. Starten Sie die Worker-Knoten des Verwaltungsclusters.
  7. Führen Sie die folgende Befehlssequenz aus, um Clusterinformationen zu erfassen und in einer anderen Datei zu speichern:

    tanzu cluster list -A --include-management-cluster -A > CLUSTER-INFO-2
    kubectl config get-contexts >> CLUSTER-INFO-2
    kubectl config use-context tkg-mgmt-vsphere-20211111074850-admin@tkg-mgmt-vsphere-20211111074850 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    kubectl config use-context mycluster1-admin@mycluster1 >> CLUSTER-INFO-2
    kubectl get nodes -o wide >> CLUSTER-INFO-2
    cat CLUSTER-INFO-2
    

    Dabei ist CLUSTER-INFO-2 eine andere lokale Textdatei, in der die Informationen gespeichert werden sollen, z. B. /tmp/SaveClusterInfo2.txt.

  8. Vergleichen Sie die beiden Clusterinformationsdateien, um sicherzustellen, dass sie über dieselben Clusterinformationen verfügen, z. B.:

    sdiff /tmp/SaveClusterInfo1.txt /tmp/SaveClusterInfo2.txt
    

Löschen von Arbeitslastclustern

Führen Sie zum Löschen eines Arbeitslastclusters den Befehl tanzu cluster delete aus. Abhängig von den Clusterinhalten und der Cloudinfrastruktur müssen Sie möglicherweise clusterinterne Datenträger und Dienste löschen, bevor Sie den Cluster selbst löschen.

Wichtig

Sie müssen Arbeitslastcluster explizit löschen. Arbeitslastcluster können nicht gelöscht werden, indem Sie ihren Namespace im Verwaltungscluster löschen.

  1. Listen Sie die Cluster auf.

    Um alle Arbeitslastcluster innerhalb des aktuellen Anmeldekontexts der Tanzu CLI aufzulisten, führen Sie den Befehl tanzu cluster list -A aus.

    tanzu cluster list -A
    
  2. Löschen Sie Datenträger und Dienste.

    Wenn der Cluster, den Sie löschen möchten, dauerhafte Datenträger oder Dienste wie Lastausgleichsdienste und Datenbanken enthält, müssen Sie sie möglicherweise manuell löschen, bevor Sie den Cluster selbst löschen. Was Sie vorab löschen müssen, hängt von Ihrer Cloudinfrastruktur ab:

    vSphere
    Gehen Sie im Falle einer vSphere-Infrastruktur wie folgt vor.

    Löschen des Diensttyps LoadBalancer

    So löschen Sie den Diensttyp LoadBalancer (Dienst) in einem Cluster:

    1. Legen Sie kubectl auf den Kontext des Clusters fest.

      kubectl config set-context my-cluster@user
      
    2. Rufen Sie die Liste der Dienste des Clusters ab.

      kubectl get service
      
    3. Löschen Sie jeden Diensttyp LoadBalancer.

      kubectl delete service <my-svc>
      

    Löschen von dauerhaften Datenträgern und Anforderungen dauerhafter Datenträger

    So löschen Sie Objekte dauerhafter Datenträger (PV) und Anforderungen dauerhafter Datenträger (PVC) in einem Cluster:

    1. Führen Sie kubectl config set-context my-cluster@user aus, um kubectl auf den Clusterkontext festzulegen.

    2. Führen Sie kubectl get pvc aus, um die Anforderungen dauerhafter Datenträger (PVCs) des Clusters abzurufen.

    3. Für jede PVC:

      1. Führen Sie kubectl describe pvc <my-pvc> aus, um den PV zu identifizieren, an den sie gebunden ist. Der PV wird in der Befehlsausgabe als Volume aufgeführt, nach Status: Gebunden (Bound).

      2. Führen Sie kubectl describe pv <my-pv> aus, um zu ermitteln, ob der gebundene PV Reclaim Policy Retain oder Delete ist.

      3. Führen Sie kubectl delete pvc <my-pvc> aus, um die PVC zu löschen.

      4. Wenn die PV-Rückforderungsrichtlinie Retain ist, führen Sie kubectl delete pv <my-pvc> aus, melden Sie sich dann bei Ihrem Cloud-Portal an und löschen Sie das PV-Objekt dort. Löschen Sie beispielsweise einen vSphere CNS-Datenträger aus Ihrem Datenspeicherbereich > Überwachen (Monitor) > Cloudnativer Speicher (Cloud Native Storage) > Container-Datenträger (Container Volumes). Weitere Informationen zu vSphere CNS finden Sie unter Erste Schritte mit Cloud Native Storage in vSphere.

    Amazon Web Services (AWS)
    Gehen Sie im Falle einer AWS-Infrastruktur wie folgt vor.
    • Lastausgleichsdienste: Anwendungs- oder Netzwerk-Lastausgleichsdienste (ALBs oder NLBs) in der VPC des Clusters, aber nicht klassische Lastausgleichsdienste (ELB v1). Löschen Sie diese Ressourcen in der AWS-Benutzeroberfläche oder mit dem Befehl kubectl delete.
    • Andere Dienste: Jedes Subnetz und jeder AWS-gestützte Dienst in der VPC des Clusters, wie z. B. RDS oder VPC, und zugehörige Ressourcen wie:

      • VPC: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > Ihre VPCs (Your VPCs).
      • RDS: Löschen unter RDS Dashboard > Datenbanken (Databases).
      • Subnetze: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > Subnetze (Subnets).
      • Routing-Tabellen: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > Routentabellen (Route Tables).
      • Internet-Gateways: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > Internet Gateways.
      • Elastische IP-Adressen: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > Elastische IPs (Elastic IPs).
      • NAT-Gateways: Löschen unter VPC-Dashboard (VPC Dashboard) > Virtual Private Cloud > NAT Gateways.
      • Netzwerk-ACLs: Löschen unter VPC-Dashboard (VPC Dashboard) > Sicherheit (Security) > Netzwerk-ACLs (Network ACLs).
      • Sicherheitsgruppen: Löschen unter VPC-Dashboard (VPC Dashboard) > Sicherheit (Security) > Sicherheitsgruppen (Security Groups).

      Löschen Sie diese Ressourcen in der AWS-Benutzeroberfläche wie oben beschrieben oder mit der aws-CLI.

    • Dauerhafte Datenträger und Anforderungen dauerhafter Datenträger: Löschen Sie diese Ressourcen mit dem Befehl kubectl delete wie unter Löschen von Anforderungen dauerhafter Datenträger und von dauerhaften Datenträgern beschrieben.

    Azure
    Im Falle einer Azure-Infrastruktur ist keine Aktion erforderlich.

    Beim Löschen eines Clusters wird alles gelöscht, was TKG in der Ressourcengruppe des Clusters erstellt hat.

  3. Migrieren Sie bei Bedarf Arbeitslasten von den Clustern, z. B. mithilfe von Velero, wie unter Clustermigration und Ressourcenfilterung in der Velero-Dokumentation beschrieben.

  4. Löschen Sie die Cluster.

    Um einen Cluster zu löschen, führen Sie tanzu cluster delete aus.

    tanzu cluster delete my-cluster
    

    Wenn der Cluster in einem anderen Namespace als default ausgeführt wird, müssen Sie die Option --namespace angeben, um diesen Cluster zu löschen.

    tanzu cluster delete my-cluster --namespace=my-namespace
    

    Um den Überprüfungsschritt yes/no zu überspringen, wenn Sie tanzu cluster delete ausführen, geben Sie die Option --yes an.

    tanzu cluster delete my-cluster --namespace=my-namespace --yes
    

    Um einen Cluster unter AWS zu löschen, muss als Variable AWS_REGION die Region festgelegt werden, in der der Cluster ausgeführt wird. Sie können AWS_REGION in der lokalen Umgebung oder im Anmeldedatenprofil festlegen, wie unter Konfigurieren der AWS-Kontoanmeldedaten beschrieben. Um den Cluster in einer anderen Region zu löschen, setzen Sie die Einstellung dem Befehl tanzu cluster delete voran:

    AWS_REGION=eu-west-1 tanzu cluster delete my-cluster
    
Wichtig

Ändern Sie den Kontext nicht und bearbeiten Sie die Datei .kube-tkg/config nicht, während Tanzu Kubernetes Grid-Vorgänge ausgeführt werden.

check-circle-line exclamation-circle-line close-line
Scroll to top icon