Sie können einen TKG-Dienstcluster durch Änderung der Knotenanzahl horizontal und durch Änderung der VM-Klasse zum Hosten der Knoten vertikal skalieren. Sie können auch Volumes skalieren, die an Clusterknoten angehängt sind.
Unterstützte manuelle Skalierungsvorgänge
Knoten | Horizontales Hochskalieren | Horizontales Herunterskalieren | Vertikale Skalierung | Skalierung des Volumes |
---|---|---|---|---|
Steuerungsebene | Ja | Nein | Ja | Ja* |
Worker | Ja | Ja | Ja | Ja |
- Die Anzahl der Steuerungsebenen-Knoten muss ungerade sein, entweder 1 oder 3. Die horizontale Skalierung der Steuerungsebene wird unterstützt, aber das vertikale Skalieren der Steuerungsebene wird nicht unterstützt. Weitere Informationen finden Sie unter Horizontales Hochskalieren der Steuerungsebene.
- 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 wird horizontale Skalierung in der Regel bevorzugt. Weitere Informationen finden Sie unter Horizontales Hochskalieren der Worker-Knoten.
- 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. Weitere Informationen finden Sie unter Informationen zu VM-Klassen.
- Worker-Knoten-Volumes können nach der Bereitstellung geändert werden. Ebenso können Steuerungsebenenknoten geändert werden, sofern Sie vSphere 8 U3 oder höher und eine kompatible TKr verwenden. Weitere Informationen finden Sie unter Skalieren von Cluster-Knoten-Volumes.
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.
Verwenden Sie die folgende Syntax:
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Beispielsweise für einen v1alpha3-API-Cluster:kubectl get tanzukubernetescluster -n tkg-cluster-ns
Beispielsweise für einen v1beta1-API-Cluster:kubectl get cluster -n tkg-cluster-ns
- Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
Für einen v1alpha3-API-Cluster:
kubectl get tanzukubernetescluster tkg-cluster-1
Der TKG-Cluster verfügt über 1 Steuerungsebenenknoten und 3 Worker-Knoten.NAMESPACE NAME CONTROL PLANE WORKER TKR NAME AGE READY tkg-cluster-ns tkg-cluster-1 1 3 v1.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:
kubectl get cluster tkg-cluster-1
- Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl
kubectl edit
aus.Für einen v1alpha3-API-Cluster:kubectl edit tanzukubernetescluster/tkg-cluster-1
Für einen v1beta1-API-Cluster:kubectl edit cluster/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.Für einen v1alpha3-API-Cluster:... spec: topology: controlPlane: replicas: 1 ...
... spec: topology: controlPlane: replicas: 3 ...
Für einen v1beta1-API-Cluster:... spec: ... topology: class: tanzukubernetescluster controlPlane: metadata: {} replicas: 1 variables: ...
... spec: ... topology: class: tanzukubernetescluster controlPlane: metadata: {} replicas: 3 variables: ...
- Speichern Sie die Datei im Texteditor, um die Änderungen zu übernehmen. (Schließen Sie zum Abbrechen den Editor ohne Speichern.)
Wenn Sie die Manifest-Änderungen speichern, wendet kubectl die Änderungen auf den Cluster an. Im Hintergrund stellt der VM-Dienst auf Supervisor den neuen Steuerungsebenenknoten bereit.
- Vergewissern Sie sich, dass die neuen Knoten hinzugefügt wurden.
Für einen v1alpha3-API-Cluster:
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.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:
kubectl get cluster tkg-cluster-1
Horizontales Hochskalieren der Worker-Knoten
Sie können einen TKG-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.
Verwenden Sie die folgende Syntax:
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Beispielsweise für einen v1alph3-API-Cluster:kubectl get tanzukubernetescluster -n tkg-cluster-ns
Beispielsweise für einen v1beta1-API-Cluster:kubectl get cluster -n tkg-cluster-ns
- Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
Für einen v1alpha3-API-Cluster:
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.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:kubectl get cluster tkg-cluster-1
- Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl
kubectl edit
aus.Für einen v1alpha3-API-Cluster:
kubectl edit tanzukubernetescluster/tkg-cluster-1
Für einen v1beta1-API-Cluster:kubectl edit cluster/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.Für einen v1alpha3-API-Cluster:... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
Für einen v1beta1-API-Cluster:... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 3 ...
... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-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 Knoten hinzugefügt wurden.
Für einen v1alpha3-API-Cluster:
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.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:
kubectl get cluster tkg-cluster-1
Horizontales Herunterskalieren der Worker-Knoten
Sie können einen TKG-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.
Verwenden Sie die folgende Syntax:
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Beispielsweise für einen v1alph3-API-Cluster:kubectl get tanzukubernetescluster -n tkg-cluster-ns
Beispielsweise für einen v1beta1-API-Cluster:kubectl get cluster -n tkg-cluster-ns
- Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
kubectl get tanzukubernetescluster tkg-cluster-1
- Rufen Sie die Anzahl der im Zielcluster ausgeführten Knoten ab.
Für einen v1alpha3-API-Cluster:
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.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:kubectl get cluster tkg-cluster-1
- Führen Sie zum Laden des Cluster-Manifests zur Bearbeitung den Befehl
kubectl edit
aus.Für einen v1alpha3-API-Cluster:
kubectl edit tanzukubernetescluster/tkg-cluster-1
Für einen v1beta1-API-Cluster:kubectl edit cluster/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.Für einen v1alpha3-API-Cluster:... spec: topology: ... nodePools: - name: worker-1 replicas: 4 ...
... spec: topology: ... nodePools: - name: worker-1 replicas: 3 ...
Für einen v1beta1-API-Cluster:... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-1 replicas: 4 ...
... apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: ... spec: ... topology: ... class: tanzukubernetescluster controlPlane: ... workers: machineDeployments: - class: node-pool metadata: {} name: node-pool-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.
Für einen v1alpha3-API-Cluster:
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.24.9---vmware.1-tkg.4 5d12h True
Für einen v1beta1-API-Cluster:
kubectl get cluster tkg-cluster-1
Vertikale Skalierung eines Clusters
TKG auf Supervisor unterstützt vertikale Skalierung für Steuerungsebenen- und Worker-Knoten des Clusters. 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 auf Supervisor unterstützt 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 Aktualisieren von TKG-Dienstclustern.
- 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.
Verwenden Sie die folgende Syntax:
kubectl get CLUSTER-KIND -n tkg-cluster-ns
Beispielsweise für einen v1alph3-API-Cluster:kubectl get tanzukubernetescluster -n tkg-cluster-ns
Beispielsweise für einen v1beta1-API-Cluster:kubectl get cluster -n tkg-cluster-ns
- Beschreiben Sie den TKG-Zielcluster und überprüfen Sie die VM-Klasse.
Für einen v1alpha3-API-Cluster:
kubectl describe tanzukubernetescluster tkg-cluster-1
Der folgende Cluster verwendet z. B. die VM-Klasse „best-effort-medium“.
spec: topology: controlPlane: replicas: 3 vmClass: best-effort-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: best-effort-medium ...
Für einen v1beta1-API-Cluster:
kubectl describe cluster tkg-cluster-1
Der folgende Cluster verwendet z. B. die VM-Klasse „best-effort-medium“.
... Topology: ... Variables: ... Name: vmClass Value: best-effort-medium ...
Hinweis: Standardmäßig ist die VM-Klasse für v1beta1-API-Cluster global als einzelne Variable festgelegt. Sie können diese Einstellung überschreiben und eine andere VM-Klasse für Steuerungsebenen- und Worker-Knoten verwenden. Weitere Informationen finden Sie unter vmClass in der API-Referenz. - Erstellen Sie eine Liste und eine Beschreibung der verfügbaren VM-Klassen.
kubectl get virtualmachineclass
kubectl describe virtualmachineclass
Hinweis: Die VM-Klasse muss an den vSphere-Namespace gebunden werden. Weitere Informationen finden Sie unter Verwenden von VM-Klassen mit TKG-Dienstclustern. - Öffnen Sie zum Bearbeiten des Manifests des Zielclusters.
Für einen v1alpha3-API-Cluster:
kubectl edit tanzukubernetescluster/tkg-cluster-1
Für einen v1beta1-API-Cluster:kubectl edit cluster/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.
Ändern Sie für einen v1alpha3-API-Cluster die VM-Klasse für die Steuerungsebene in
guaranteed-medium
und die VM-Klasse für Worker-Knoten inguaranteed-large
.spec: topology: controlPlane: replicas: 3 vmClass: guaranteed-medium ... nodePools: - name: worker-nodepool-a1 replicas: 3 vmClass: guaranteed-large ...
Ändern Sie für einen v1beta-API-Cluster die VM-Klasse inguaranteed-large
.... Topology: ... Variables: ... Name: vmClass Value: guaranteed-large ...
- 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.
Für einen v1alpha3-API-Cluster:
kubectl describe tanzukubernetescluster tkg-cluster-1
Für einen v1beta1-API-Cluster:
kubectl describe cluster tkg-cluster-1
Skalieren von Cluster-Knoten-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 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 zulässig, wenn Sie vSphere 8 U3 oder höher verwenden |
Wenn Sie vSphere 8 U3 oder höher und ein kompatibles Tanzu Kubernetes Release verwenden, können Sie ein Knoten-Volume der Steuerungsebene nach der Bereitstellung eines TKG-Dienstclusters hinzufügen oder aktualisieren. Wenn Sie vSphere 8 U3 oder höher nicht verwenden, lässt die Kubernetes-Cluster-API (CAPI) keine Ä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“. |
Bei Folgenden handelt es sich um einen Auszug aus einer Clusterspezifikation, die auf der v1alpha3-API mit deklarierten Knoten-Volumes basiert. 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. Ein Beispiel für einen v1beta1-API-Cluster finden Sie unter v1beta1-Beispiel: Benutzerdefinierter Cluster basierend auf der standardmäßigen ClusterClass.
apiVersion: run.tanzu.vmware.com/v1alpha3 kind: TanzuKubernetesCluster ... spec: topology: controlPlane: replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-medium tkr: reference: name: v1.24.9---vmware.1-tkg.4 nodePools: - name: worker-nodepool-a1 replicas: 3 storageClass: tkg-storage-policy vmClass: guaranteed-large tkr: reference: name: v1.24.9---vmware.1-tkg.4 volumes: - name: containerd mountPath: /var/lib/containerd capacity: storage: 50Gi - name: kubelet mountPath: /var/lib/kubelet capacity: storage: 50Gi - name: worker-nodepool-a2 ... settings: ...