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
Knoten | Horizontales Hochskalieren | Horizontales Herunterskalieren | Vertikale Skalierung | Skalierung des Volumes |
---|---|---|---|---|
Steuerungsebene | Ja | Nein | Ja | Nein |
Worker | Ja | Ja | Ja | Ja |
- 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.
kubectl edit tanzukubernetescluster/tkg-cluster-1 tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
kubectl edit tanzukubernetescluster/tkg-cluster-1 Edit cancelled, no changes made.
Horizontales Hochskalieren der Steuerungsebene
- Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=SUPERVISOR-IP-ADDRESS --vsphere-username USERNAME
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
kubectl config use-context tkg-cluster-ns
- 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
- 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
- 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.
- 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 ...
- 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.
- 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.
- Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
kubectl config use-context tkg-cluster-ns
- 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
- 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
- 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.
- 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 ...
- 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.
- 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.
- Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
kubectl config use-context tkg-cluster-ns
- 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
- 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
- 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.
- 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 ...
- 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.
- 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.
- Melden Sie sich bei Supervisor an.
kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
- Wechseln Sie den Kontext zum vSphere-Namespace, in dem der TKG-Cluster ausgeführt wird.
kubectl config use-context tkg-cluster-ns
- 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
- 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 ...
- 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. - Ö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.
- Bearbeiten Sie das Manifest, indem Sie die VM-Klasse ändern.
Der Cluster verwendet beispielsweise die VM-Klasse
für Steuerungsebene und Worker-Knoten.best-effort-xsmall
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 inguaranteed-large
und die VM-Klasse für Worker-Knoten inguaranteed-2xlarge
.spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-large ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-2xlarge ...
- 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.
- 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.
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 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“. |
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
tanzu cluster scale CLUSTER-NAME -p POOL-NAME -w REPLICAS -n VSPHERE-NAMESPACE
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.
tanzu cluster scale tkg2-cluster-1 -p node-pool-1 -w 3 -n tkg-cluster-ns