In diesem Thema wird erläutert, wie Sie Tanzu Kubernetes Grid (TKG)-Arbeitslastcluster und eigenständige Verwaltungscluster mithilfe der folgenden Methoden skalieren können:
Autoscaler: Für Arbeitslastcluster, die von einem eigenständigen Verwaltungscluster bereitgestellt werden, können Sie Cluster Autoscaler einsetzen, um die Anzahl der Worker-Knoten automatisch zu skalieren, um sie an den Bedarf anzupassen. Weitere Informationen finden Sie unter Skalieren von Worker-Knoten mit Cluster Autoscaler.
Sie können Autoscaler nicht zum Skalieren von Arbeitslastclustern, die von einem Supervisor-Cluster bereitgestellt werden, verwenden.
Horizontal skalieren: Für Arbeitslastcluster oder eigenständige Verwaltungscluster können Sie die Anzahl der Steuerungsebenen- und Worker-Knoten manuell skalieren. Weitere Informationen finden Sie unter Horizontales Skalieren eines Clusters.
Vertikal skalieren: Für Arbeitslastcluster können Sie die Größe der Steuerungsebenen- und Worker-Knoten manuell ändern. Weitere Informationen finden Sie unter Vertikales Skalieren eines Clusters.
HinweisInformationen zum Skalieren von Knoten in einem Knotenpool finden Sie unter Aktualisieren von Knotenpools in Verwalten von Knotenpools verschiedener VM-Typen.
Cluster Autoscaler ist ein Kubernetes-Programm, das Kubernetes-Cluster automatisch in Abhängigkeit von den Anforderungen an die Arbeitslastcluster skaliert. Verwenden Sie Cluster Autoscaler nur für Arbeitslastcluster, die von einem eigenständigen Verwaltungscluster bereitgestellt werden.
Weitere Informationen zu Cluster Autoscaler finden Sie in der folgenden Dokumentation in GitHub:
Standardmäßig ist Cluster Autoscaler in Tanzu Kubernetes Grid deaktiviert. Um Cluster Autoscaler in einem Arbeitslastcluster zu aktivieren, setzen Sie den ENABLE_AUTOSCALER
auf true
und legen Sie die AUTOSCALER_
-Optionen in der Clusterkonfigurationsdatei oder als Umgebungsvariable fest, bevor Sie tanzu cluster create --file
ausführen.
WichtigFür class-basierte Cluster: Aufgrund eines Bezeichnungs-Weitergabeproblems in der Cluster-API müssen Sie nach dem Erstellen eines klassenbasierten Arbeitslastclusters manuell Anmerkungen über
min-size
undmax-size
zu seinenMachineDeployment
-Objekten hinzufügen, um Cluster Autoscaler zu aktivieren, wie unter (Manuelles Hinzufügen von Anmerkungen für minimale und maximale Größe)[#cc-Problemumgehung] unten beschrieben.
Jede Cluster Autoscaler-Konfigurationsvariable in einer Clusterkonfigurationsdatei entspricht einem Parameter im Cluster Autoscaler-Tool. Eine Liste dieser Variablen und deren Standardwerte finden Sie unter Cluster Autoscaler in der Variablenreferenz für Konfigurationsdatei.
Die Einstellungen AUTOSCALER_*_SIZE
begrenzen die Anzahl der Worker-Knoten in einem Cluster, während AUTOSCALER_MAX_NODES_TOTAL
die Anzahl aller Knoten sowohl der Worker- als auch der Steuerungsebene beschränkt.
Legen Sie je nach Anzahl der Worker-Knoten im Cluster AUTOSCALER_*_SIZE
-Werte fest:
dev
-Clustern, AUTOSCALER_MIN_SIZE_0
und AUTOSCALER_MAX_SIZE_0
fest.prod
-Clustern, Folgendes fest:
AUTOSCALER_MIN_SIZE_0
und AUTOSCALER_MAX_SIZE_0
AUTOSCALER_MIN_SIZE_1
und AUTOSCALER_MAX_SIZE_1
AUTOSCALER_MIN_SIZE_2
und AUTOSCALER_MAX_SIZE_2
Im Folgenden finden Sie ein Beispiel für Cluster Autoscaler-Einstellungen des Clusters in einer Clusterkonfigurationsdatei. Sie können diese Werte nach der Bereitstellung des Clusters nicht mehr ändern.
#! ---------------------------------------------------------------------
#! Autoscaler related configuration
#! ---------------------------------------------------------------------
ENABLE_AUTOSCALER: false
AUTOSCALER_MAX_NODES_TOTAL: "0"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_ADD: "10m"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_DELETE: "10s"
AUTOSCALER_SCALE_DOWN_DELAY_AFTER_FAILURE: "3m"
AUTOSCALER_SCALE_DOWN_UNNEEDED_TIME: "10m"
AUTOSCALER_MAX_NODE_PROVISION_TIME: "15m"
AUTOSCALER_MIN_SIZE_0:
AUTOSCALER_MAX_SIZE_0:
AUTOSCALER_MIN_SIZE_1:
AUTOSCALER_MAX_SIZE_1:
AUTOSCALER_MIN_SIZE_2:
AUTOSCALER_MAX_SIZE_2:
Für jeden Arbeitslastcluster, der mit aktiviertem Cluster Autoscaler erstellt wurde, erstellt Tanzu Kubernetes Grid eine Cluster Autoscaler-Bereitstellung im Verwaltungscluster. Um Cluster Autoscaler zu deaktivieren, löschen Sie die Cluster Autoscaler-Bereitstellung, die Ihrem Arbeitslastcluster zugeordnet ist.
Nachdem Sie einen klassenbasierten Arbeitslastcluster erstellt haben, für den Cluster Autoscaler aktiviert ist, müssen Sie aufgrund eines Bezeichnungs-Weitergabeproblems in der Cluster-API Anmerkungen zu min-size
und max-size
manuell wie folgt zu seinen MachineDeployment
-Objekten hinzufügen:
Legen Sie den Kontext von kubectl
auf Ihren Verwaltungscluster fest:
kubectl config use-context MY-MGMT-CLUSTER-admin@MY-MGMT-CLUSTER
Dabei ist MY-MGMT-CLUSTER
der Name Ihres Verwaltungsclusters.
Listen Sie die MachineDeployment
-Objekte auf und notieren Sie deren AGE
-Wert:
kubectl get md
Die Objektnamen enden auf -md
, gefolgt von einer Zahl für jede Verfügbarkeitszone (Availability Zone, AZ).
Für jede neu erstellte MachineDeployment
im Cluster:
Fügen Sie eine Anmerkung zu min-size
hinzu:
kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-min-size="MIN-SIZE"
Dabei gilt:
MD-NAME
ist der Name des MachineDeployment
-Objekts, z. B. my-wc-md-0
MIN-SIZE
ist der AUTOSCALER_MIN_SIZE_*
-Wert für die Verfügbarkeitszone, z. B. der Wert AUTOSCALER_MIN_SIZE_0
für *-md0
, der in der ersten Verfügbarkeitszone bereitgestellt wird.Fügen Sie eine Anmerkung zu max-size
hinzu:
kubectl annotate machinedeployment MD-NAME cluster.k8s.io/cluster-api-autoscaler-node-group-max-size="MAX-SIZE"
Dabei ist MAX-SIZE
die maximale Anzahl der MachineDeployment
-Knoten für die AZ wie oben angegeben.
Sie können einen TKG-Cluster je nach Clustertyp auf zwei Arten horizontal skalieren:
replicas
in der Clusterdefinition, wie nachfolgend im Abschnitt Skalieren eines klassenbasierten Clusters beschrieben.Um einen Arbeitslastcluster oder einen eigenständigen Verwaltungscluster horizontal mit der Tanzu CLI zu skalieren, führen Sie den Befehl tanzu cluster scale
aus.
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.
--controlplane-machine-count
und --worker-machine-count
legen die neue Anzahl der Steuerungsebenen- bzw. Worker-Knoten fest.Beispiele:
So skalieren Sie einen Cluster auf 5 Knoten der Steuerungsebene und 10 Worker-Knoten.
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10
Wenn Sie einen Cluster mit --controlplane-machine-count 1
bereitgestellt haben und ihn dann auf bis zu 3 Knoten der Steuerungsebene hochskalieren, aktiviert Tanzu Kubernetes Grid automatisch gestapelte HA auf der Steuerungsebene.
Wenn der Cluster in einem anderen Namespace als default
ausgeführt wird, müssen Sie die Option --namespace
hinzufügen:
tanzu cluster scale MY-CLUSTER --controlplane-machine-count 5 --worker-machine-count 10 --namespace=MY-NAMESPACE
vSphere mit eigenständigem Verwaltungscluster: Nach dem Ändern der Knotenanzahl eines Clusters auf vSphere mit einem eigenständigen Verwaltungscluster müssen die DHCP-Reservierungen aller hinzugefügten oder entfernten IP-Adressen reserviert oder freigegeben werden. Informationen zum manuellen Ändern dieser Reservierungen finden Sie unter Konfigurieren von DHCP-Reservierungen für Knoten und DNS-Datensätzen für Endpoints (nur vSphere). Anweisungen zum Konfigurieren von DHCP-Reservierungen finden Sie in der Dokumentation zum DHCP-Server.
vSphere mit Supervisor-Cluster Auf Clustern, die in vSphere with Tanzu ausgeführt werden, können Sie nur entweder 1 Knoten der Steuerungsebene oder 3 Knoten der Steuerungsebene ausführen. Sie können die Anzahl der Knoten der Steuerungsebene von 1 auf 3 hochskalieren, aber Sie können die Anzahl nicht von 3 auf 1 herunterskalieren.
Wie ein Arbeitslastcluster vertikal skaliert wird, hängt vom Clustertyp ab.
Befolgen Sie den Vorgang Aktualisieren von Infrastruktur-Maschinenvorlagen im Cluster-API-Handbuch, mit dem die Maschinenvorlage des Clusters geändert wird.
Bei diesem Vorgang wird die vorhandene Maschinenvorlage des Clusters mit einem Befehl kubectl get
heruntergeladen, den Sie wie folgt erstellen können:
kubectl get MACHINE-TEMPLATE-TYPE MACHINE-TEMPLATE-NAME -o yaml
Dabei gilt:
MACHINE-TEMPLATE-TYPE
lautet:
VsphereMachineTemplate
auf vSphereAWSMachineTemplate
auf Amazon Web Services (AWS)AzureMachineTemplate
auf AzureMACHINE-TEMPLATE-NAME
ist der Name der Maschinenvorlage für die Clusterknoten, die Sie skalieren, und hat folgendes Format:
CLUSTER-NAME-control-plane
für Knoten der SteuerungsebeneCLUSTER-NAME-worker
für Worker-KnotenBeispiel:
kubectl get VsphereMachineTemplate monitoring-cluster-worker -o yaml
Wenn Sie einen klassenbasierten Cluster vertikal skalieren möchten, ändern Sie die machine
-Einstellungen in der zugehörigen Clusterdefinition wie unten unter Skalieren eines klassenbasierten Clusters beschrieben.
So skalieren Sie einen klassenbasierten Cluster horizontal oder vertikal mithilfe seiner topology
-Konfiguration:
Setzen Sie kubectl
auf den Kontext des Verwaltungsclusters, zum Beispiel:
kubectl config use-context management-cluster@admin
Führen Sie kubectl edit cluster CLUSTER-NAME
aus und bearbeiten Sie die Einstellungen in dem zugehörigen topology
-Block unter controlPlane
und worker
.
Um horizontal zu skalieren, ändern Sie die Einstellungen unter replicas
. - Um vertikal zu skalieren, ändern Sie die Einstellungen unter machine
.
Beispiel:
- name: controlPlane
value:
replicas: 3
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4
- name: worker
value:
replicas: 5
machine:
diskGiB: 20
memoryMiB: 8192
numCPUs: 4