Sie können einen TKG-Cluster horizontal skalieren, indem Sie die Anzahl der Knoten ändern, oder vertikal skalieren, indem Sie die Klasse der virtuellen Maschine ändern, die die Knoten hostet. Sie können auch dauerhafte Volumes skalieren. Möglicherweise gelten einige Einschränkungen.

Unterstützte Skalierungsvorgänge

In der Tabelle sind die unterstützten Skalierungsvorgänge für TKG 2-Cluster aufgeführt.
Tabelle 1. Unterstützte Skalierungsvorgänge für TKG 2-Cluster
Knoten Horizontales Hochskalieren Horizontales Herunterskalieren Vertikale Skalierung Skalierung des Volumes
Steuerungsebene Ja Nein Ja Nein
Worker Ja Ja Ja Ja
Berücksichtigen Sie die folgenden Aspekte:
  • Die Anzahl der Steuerungsebenen-Knoten muss ungerade sein, entweder 1 oder 3. Die Skalierung in der Steuerungsebene wird nicht unterstützt.
  • Bei der vertikalen Skalierung eines Clusterknotens kann es vorkommen, dass Arbeitslasten mangels verfügbarer Ressourcen nicht mehr auf dem Knoten ausgeführt werden können. Aus diesem Grund kann die horizontale Skalierung als Ansatz bevorzugt werden.
  • VM-Klassen sind nicht unveränderlich. Wenn Sie einen TKG-Cluster nach der Bearbeitung einer von diesem Cluster verwendeten VM-Klasse skalieren, verwenden neue Clusterknoten die aktualisierte Klassendefinition, aber vorhandene Clusterknoten verwenden weiterhin die anfängliche Klassendefinition, was zu einer Nichtübereinstimmung führt.
  • Worker-Knoten-Volumes können nach der Bereitstellung geändert werden, Knoten-Volumes der Steuerungsebene hingegen nicht.

Skalierungsvoraussetzungen: Konfigurieren der Kubectl-Bearbeitung

Um einen TKG-Cluster zu skalieren, aktualisieren Sie das Cluster-Manifest mit dem Befehl kubectl edit CLUSTER-KIND/CLUSTER-NAME. Wenn Sie die Manifest-Änderungen speichern, wird der Cluster mit den Änderungen aktualisiert. Weitere Informationen finden Sie unter Konfigurieren eines Texteditors für Kubectl.

Beispiel:
kubectl edit tanzukubernetescluster/tkg-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
Um Änderungen zu verwerfen, schließen Sie den Editor, ohne zu speichern.
kubectl edit tanzukubernetescluster/tkg-cluster-1
Edit cancelled, no changes made.

Horizontales Hochskalieren der Steuerungsebene

Skalieren Sie einen TKG 2-Cluster horizontal, indem Sie die Anzahl der Steuerungsebenenknoten von 1 auf 3 erhöhen.
  1. Melden Sie sich bei Supervisor an.
    kubectl vsphere login --server=SUPERVISOR-IP-ADDRESS --vsphere-username USERNAME
  2. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
    kubectl config use-context tkg-cluster-ns
  3. Listet die Kubernetes-Cluster auf, die im vSphere-Namespace ausgeführt werden.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Beispiel:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Der TKG-Cluster hat beispielsweise 1 Steuerungsebenenknoten und 3 Worker-Knoten.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster-1    1               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl kubectl edit aus.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Das Cluster-Manifest wird in dem Texteditor geöffnet, der von den Umgebungsvariablen KUBE_EDITOR oder EDITOR definiert wird.

  6. Erhöhen Sie die Anzahl der Steuerungsebenenknoten im Abschnitt spec.topology.controlPlane.replicas des Manifests von 1 auf 3.
    Beispiel:
    ...
    spec:
      topology:
        controlPlane:
          replicas: 1
    ...
    
    ...
    spec:
      topology:
        controlPlane:
          replicas: 3
    ...
    
  7. Um die Änderungen anzuwenden, speichern Sie die Datei im Texteditor. Schließen Sie zum Abbrechen den Editor ohne Speichern.

    Wenn Sie die Manifest-Änderungen speichern, wendet kubectl die Änderungen auf den Cluster an. Der VM-Dienst im Supervisor stellt im Hintergrund den neuen Worker-Knoten bereit.

  8. Vergewissern Sie sich, dass die neuen Knoten hinzugefügt wurden.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Die horizontal hochskalierte Steuerungsebene verfügt jetzt über 3 Knoten.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Horizontales Hochskalieren der Worker-Knoten

Sie können einen TKG 2-Cluster horizontal skalieren, indem Sie die Zahl der Worker-Knoten erhöhen.

  1. Melden Sie sich bei Supervisor an.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
    kubectl config use-context tkg-cluster-ns
  3. Listet die Kubernetes-Cluster auf, die im vSphere-Namespace ausgeführt werden.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Beispiel:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Der folgende Cluster hat z. B. 3 Steuerungsebenenknoten und 3 Worker-Knoten.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl kubectl edit aus.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Das Cluster-Manifest wird in dem Texteditor geöffnet, der von den Umgebungsvariablen KUBE_EDITOR oder EDITOR definiert wird.

  6. Erhöhen Sie die Anzahl der Worker-Knoten, indem Sie den Wert spec.topology.nodePools.NAME.replicas für den Ziel-Worker-Knotenpool bearbeiten.
    Beispiel:
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 3
    ...
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 4
    ...
  7. Um die Änderungen anzuwenden, speichern Sie die Datei im Texteditor. Um die Änderungen zu verwerfen, schließen Sie den Editor ohne zu speichern.

    Wenn Sie die Datei speichern, wendet kubectl die Änderungen auf den Cluster an. Der VM-Dienst im Supervisor stellt im Hintergrund den neuen Worker-Knoten bereit.

  8. Vergewissern Sie sich, dass die neuen Worker-Knoten hinzugefügt wurden.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Durch das horizontale Hochskalieren ergeben sich 4 Worker-Knoten für den Cluster.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster      3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Horizontales Herunterskalieren der Worker-Knoten

Sie können einen TKG 2-Cluster vertikal skalieren, indem Sie die Zahl der Worker-Knoten verringern.

  1. Melden Sie sich bei Supervisor an.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
    kubectl config use-context tkg-cluster-ns
  3. Listet die Kubernetes-Cluster auf, die im vSphere-Namespace ausgeführt werden.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Beispiel:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Der folgende Cluster hat z. B. 3 Steuerungsebenenknoten und 4 Worker-Knoten.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster      3               4        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    
  5. Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl kubectl edit aus.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Das Cluster-Manifest wird in dem Texteditor geöffnet, der von den Umgebungsvariablen KUBE_EDITOR oder EDITOR definiert wird.

  6. Verringern Sie die Anzahl der Worker-Knoten, indem Sie den Wert spec.topology.nodePools.NAME.replicas für den Ziel-Worker-Knotenpool bearbeiten.
    Beispiel:
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 4
    ...
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 3
    ...
  7. Um die Änderungen anzuwenden, speichern Sie die Datei im Texteditor. Um die Änderungen zu verwerfen, schließen Sie den Editor ohne zu speichern.

    Wenn Sie die Datei speichern, wendet kubectl die Änderungen auf den Cluster an. Der VM-Dienst im Supervisor stellt im Hintergrund den neuen Worker-Knoten bereit.

  8. Vergewissern Sie sich, dass die Worker-Knoten entfernt wurden.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Durch das horizontale Herunterskalieren ergeben sich 3 Worker-Knoten für den Cluster.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.21.2---vmware.1-tkg.1.13da849   5d12h   True
    

Vertikale Skalierung eines Clusters

TKG 2 auf Supervisor unterstützt die vertikale Skalierung für Cluster-Steuerungsebenen und Worker-Knoten. Sie führen die vertikale Skalierung eines TKG-Clusters durch, indem Sie die für Clusterknoten verwendete Klasse der virtuellen Maschine ändern. Die von Ihnen verwendete VM-Klasse muss an den vSphere-Namespace gebunden werden, in dem der TKG-Cluster bereitgestellt wird.

TKG 2 auf Supervisor unterstützt die vertikale Skalierung über den im System integrierten Mechanismus für parallele Aktualisierungen. Wenn Sie die VirtualMachineClass-Definition ändern, führt das System neue Knoten mit dieser Klasse ein und fährt die alten Knoten herunter. Weitere Informationen hierzu finden Sie unter Warten von TKG 2-Clustern auf Supervisor.

  1. Melden Sie sich bei Supervisor an.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
    kubectl config use-context tkg-cluster-ns
  3. Listet die Kubernetes-Cluster auf, die im vSphere-Namespace ausgeführt werden.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Beispiel:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Beschreiben Sie den TKG-Zielcluster und überprüfen Sie die VM-Klasse.
    kubectl describe tanzukubernetescluster tkg-cluster-1

    Der folgende Cluster verwendet z. B. die VM-Klasse „best-effort-medium“.

    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-medium
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-medium
          ...
    
  5. Erstellen Sie eine Liste und eine Beschreibung der verfügbaren VM-Klassen.
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    Hinweis: Die VM-Klasse muss an den vSphere-Namespace gebunden werden. Weitere Informationen finden Sie unter Verwenden von VM-Klassen mit TKG 2-Clustern auf Supervisor.
  6. Öffnen Sie zum Bearbeiten des Manifests des Zielclusters.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Das Cluster-Manifest wird in dem Texteditor geöffnet, der von den Umgebungsvariablen KUBE_EDITOR oder EDITOR definiert wird.

  7. Bearbeiten Sie das Manifest, indem Sie die VM-Klasse ändern.
    Der Cluster verwendet beispielsweise die VM-Klasse best-effort-xsmall für Steuerungsebene und Worker-Knoten.
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: best-effort-xsmall
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: best-effort-xsmall
          ...
    
    Ändern Sie die VM-Klasse für die Steuerungsebene in guaranteed-large und die VM-Klasse für Worker-Knoten in guaranteed-2xlarge.
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-large
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-2xlarge
          ...
    
  8. Um die Änderungen anzuwenden, speichern Sie die Datei im Texteditor. Um die Änderungen zu verwerfen, schließen Sie den Editor ohne zu speichern.

    Wenn Sie die Datei speichern, wendet kubectl die Änderungen auf den Cluster an. Im Hintergrund führt TKG auf Supervisor ein paralleles Update des TKG-Clusters durch.

  9. Stellen Sie sicher, dass der TKG-Cluster mit der neuen VM-Klasse aktualisiert wurde.
    kubectl describe tanzukubernetescluster tkg-cluster-1

Skalieren von TKG-Clusterknoten-Volumes

In der TKG-Clusterspezifikation für Knoten können Sie optional ein oder mehrere persistente Volumes für den Knoten deklarieren. Das Deklarieren eines Knoten-Volumes eignet sich für Komponenten mit hohen Änderungsraten, wie z. B. die ectd-Datenbank auf der Steuerungsebene und die Container-Laufzeit und kubelet auf Worker-Knoten.

Wenn Sie nach der Clustererstellung ein oder mehrere Knoten-Volumes hinzufügen oder ändern möchten, bedenken Sie Folgendes:
Volume-Knoten Beschreibung

Änderungen des Worker-Knoten-Volumes sind zulässig

Nach der Bereitstellung eines TKG-Clusters können Sie Worker-Knoten-Volumes hinzufügen oder aktualisieren. Wenn Sie ein paralleles Update initiieren, wird der Cluster mit dem neuen oder geänderten Volume aktualisiert.

Warnung: Wenn Sie den Worker-Knoten mit einem neuen oder geänderten Volume skalieren, werden die Daten im aktuellen Volume während des parallelen Updates gelöscht. Weitere Informationen finden Sie in der folgenden Erläuterung.

Ein für einen TKG-Clusterknoten deklariertes Volume wird als flüchtig behandelt. Ein TKG-Cluster verwendet eine Beanspruchung eines dauerhaften Volumes (Persistent Volume Claim, PVC) im vSphere Namespace, sodass die Volume-Kapazität dem Speicherkontingent des TKG-Clusters angerechnet wird. Wenn Sie die Kapazität eines TKC-Volumes erhöhen, stellt die Kubernetes-Cluster-API (CAPI) neue Worker mit einer neuen PVC bereit. TKG führt in diesem Fall keine Datenmigration durch. Kubernetes plant Arbeitslast-Pods entsprechend (neu).

Änderungen des Knoten-Volumes der Steuerungsebene sind nicht zulässig

Nach der Bereitstellung eines TKG-Clusters können Sie ein Knoten-Volume einer Steuerungsebene weder hinzufügen noch aktualisieren. Die Kubernetes-Cluster-API (CAPI) verbietet Änderungen an spec.toplogy.controlPlane.volumes nach der Erstellung.

Der Versuch, ein Steuerungsebenen-Volume nach der Clustererstellung hinzuzufügen oder zu ändern, wird zurückgewiesen, und Sie erhalten die Fehlermeldung „Aktualisierungen unveränderlicher Felder sind nicht zulässig“.

Ein Auszug aus der Clusterspezifikation mit deklarierten Knoten-Volumes wird als Kontext bereitgestellt. Weitere Informationen finden Sie im vollständigen Beispiel eines TKG-Clusters, aus dem dieser Auszug nach Bedarf entnommen wird: v1alpha3-Beispiel: TKC mit Standardspeicher und Knoten-Volumes.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
...
spec:
   topology:
     controlPlane:
       replicas: 3
       storageClass: tkg-storage-policy
       vmClass: guaranteed-medium
       tkr:
         reference:
           name: v1.22.8---vmware.1-tkg.2-zshippable
       volumes:
       - name: etcd
         mountPath: /var/lib/etcd
         capacity:
           storage: 4Gi
     nodePools:
     - name: worker-nodepool-a1
       replicas: 3
       storageClass: tkg-storage-policy
       vmClass: guaranteed-large
       tkr:
         reference:
           name: v1.23.8---vmware.2-tkg.2-zshippable
       volumes:
       - name: containerd
         mountPath: /var/lib/containerd
         capacity:
           storage: 50Gi
       - name: kubelet
         mountPath: /var/lib/kubelet
         capacity:
           storage: 50Gi
     - name: worker-nodepool-a2
       ...
   settings:
     ...

Skalieren von TKG-Cluster-Worker-Knoten mithilfe der Tanzu-CLI

Verwenden Sie zum Skalieren von TKG-Cluster-Worker-Knoten mithilfe der Tanzu-CLI die folgende Syntax.
Hinweis: Umfassende Informationen zur Nutzung finden Sie im Tanzu-CLI-Referenzhandbuch.
tanzu cluster scale CLUSTER-NAME -p POOL-NAME -w REPLICAS -n VSPHERE-NAMESPACE
Dabei gilt:
  • CLUSTER-NAME ist der Name des TKG-Clusters, den Sie für die Skalierung als Ziel verwenden.
  • POOL-NAME ist der Name des Worker-Knotenpools, den Sie als Ziel verwenden.
  • REPLICAS ist die Zielanzahl der Worker-Knoten (Ganzzahl).
  • VSPHERE-NAMESPACE ist der vSphere-Namespace, in dem der TKG-Zielcluster bereitgestellt wird.
Beispiel:
tanzu cluster scale tkg2-cluster-1 -p node-pool-1 -w 3 -n tkg-cluster-ns