Auf dieser Seite wird beschrieben, wie Sie Ihre Standard Google Kubernetes Engine-Cluster (GKE) automatisch skalieren. In diesem Artikel wird die Funktionsweise von Cluster Autoscaler beschrieben.
Mit Autopilot-Clustern müssen Sie sich keine Gedanken über die Bereitstellung von Knoten oder die Verwaltung von Knotenpools machen, da Knotenpools automatisch über die automatische Knotenbereitstellung bereitgestellt und automatisch skaliert werden, um die Anforderungen Ihrer Arbeitslasten zu erfüllen.
Cluster-Autoscaling verwenden
Im folgenden Abschnitt wird die Nutzung von Cluster Autoscaler erklärt.
Cluster mit Autoscaling erstellen
Sie können einen Cluster mit aktiviertem Autoscaling über die Google Cloud CLI oder die Google Cloud Console erstellen.
gcloud
Verwenden Sie zum Erstellen eines Clusters mit Autoscaling das Flag --enable-autoscaling
und geben Sie --min-nodes
und --max-nodes
an.
gcloud container clusters create CLUSTER_NAME \
--enable-autoscaling \
--num-nodes NUM_NODES \
--min-nodes MIN_NODES \
--max-nodes MAX_NODES \
--location=CONTROL_PLANE_LOCATION
Dabei gilt:
CLUSTER_NAME
: Der Name des zu erstellenden Clusters.NUM_NODES
: Die Anzahl der Knoten, die an jedem Standort erstellt werden sollen.MIN_NODES
: Die Mindestanzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-min-nodes
, um die Mindestanzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.MAX_NODES
: Die maximale Anzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-max-nodes
, um die maximale Anzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Beispiel: Cluster mit aktiviertem Knoten-Autoscaling und Mindest- und Höchstzahl von Knoten erstellen
Der folgende Befehl erstellt einen Cluster mit 90 Knoten bzw. 30 Knoten in jeder der 3 Zonen in der Region. Das Autoscaling für Knoten ist aktiviert und passt die Anzahl der Knoten entsprechend der Clusterlast an. Das Cluster-Autoscaling kann die Größe des Standardknotenpools auf 15 Knoten verringern oder den Knotenpool auf bis zu 50 Knoten pro Zone erhöhen.
gcloud container clusters create my-cluster --enable-autoscaling \
--num-nodes=30 \
--min-nodes=15 --max-nodes=50 \
--location=us-central
Beispiel: Cluster mit aktiviertem Knoten-Autoscaling und Gesamtzahl an Knoten erstellen
Der folgende Befehl erstellt einen Cluster mit 30 Knoten bzw. 10 Knoten in jeder der 3 Zonen in der Region. Das Autoscaling für Knoten ist aktiviert und passt die Anzahl der Knoten entsprechend der Clusterlast an. In diesem Beispiel kann die Gesamtgröße des Clusters unabhängig von der Verteilung zwischen Zonen zwischen 10 und 60 Knoten liegen.
gcloud container clusters create my-cluster --enable-autoscaling \
--num-nodes 10 \
--location us-central1 \
--total-min-nodes 10 --total-max-nodes 60
Console
So erstellen Sie einen neuen Cluster, in dem für den Standardknotenpool Autoscaling aktiviert ist:
Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster erstellen auf.
Konfigurieren Sie den Cluster wie gewünscht.
Klicken Sie im Navigationsbereich unter Knotenpools auf default-pool.
Klicken Sie das Kästchen Autoscaling aktivieren an.
Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.
Klicken Sie auf Erstellen.
Knotenpools mit Autoscaling hinzufügen
Sie können einen Knotenpool mit aktiviertem Autoscaling über die gcloud CLI oder die Google Cloud -Konsole erstellen.
gcloud
Verwenden Sie den folgenden Befehl, um einem vorhandenen Cluster einen Knotenpool mit Autoscaling hinzuzufügen:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--enable-autoscaling \
--min-nodes=MIN_NODES \
--max-nodes=MAX_NODES \
--location=CONTROL_PLANE_LOCATION
Dabei gilt:
POOL_NAME
ist der Name des gewünschten Knotenpools.CLUSTER_NAME
: Der Name des Clusters, in dem der Knotenpool erstellt wird.MIN_NODES
: Die Mindestanzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-min-nodes
, um die Mindestanzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.MAX_NODES
: Die maximale Anzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-max-nodes
, um die maximale Anzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Beispiel: Knotenpool mit aktiviertem Autoscaling für Knoten hinzufügen
Mit dem folgenden Befehl wird ein Knotenpool mit Knoten-Autoscaling erstellt, wobei der Knotenpool auf maximal 5 Knoten und mindestens 1 Knoten skaliert wird:
gcloud container node-pools create my-node-pool \
--cluster my-cluster \
--enable-autoscaling \
--min-nodes 1 --max-nodes 5 \
--location us-central1-c
Console
So fügen Sie einem vorhandenen Cluster einen Knotenpool mit Autoscaling hinzu:
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf Knotenpool hinzufügen add_box.
Konfigurieren Sie den Knotenpool wie gewünscht.
Klicken Sie unter Größe das Kästchen Autoscaling aktivieren an.
Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.
Klicken Sie auf Erstellen.
Autoscaling für vorhandene Knotenpools aktivieren
Sie können das Autoscaling für einen vorhandenen Knotenpool über die gcloud CLI oder die Google Cloud -Konsole aktivieren.
gcloud
Mit dem folgenden Befehl können Sie die automatische Skalierung für einen vorhandenen Knotenpool aktivieren:
gcloud container clusters update CLUSTER_NAME \
--enable-autoscaling \
--node-pool=POOL_NAME \
--min-nodes=MIN_NODES \
--max-nodes=MAX_NODES \
--location=CONTROL_PLANE_LOCATION
Dabei gilt:
CLUSTER_NAME
: der Name des Clusters, der aktualisiert werden soll.POOL_NAME
ist der Name des gewünschten Knotenpools. Wenn Sie nur einen Knotenpool haben, geben Siedefault-pool
als Wert an.MIN_NODES
: Die Mindestanzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-min-nodes
, um die Mindestanzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.MAX_NODES
: Die maximale Anzahl der Knoten, die automatisch für den angegebenen Knotenpool pro Zone skaliert werden sollen. Verwenden Sie--total-max-nodes
, um die maximale Anzahl der Knoten für den gesamten Knotenpool in GKE-Version 1.24 und höher anzugeben. Die Flags--total-min-nodes
und--total-max-nodes
einerseits und die Flags--min-nodes
und--max-nodes
andererseits schließen sich gegenseitig aus.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Console
So aktivieren Sie Autoscaling für einen vorhandenen Knotenpool:
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf den Tab Knoten.
Klicken Sie unter Knotenpools auf den Namen des Knotenpools, den Sie ändern möchten, und klicken Sie dann auf edit Bearbeiten.
Klicken Sie unter Größe das Kästchen Autoscaling aktivieren an.
Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.
Klicken Sie auf Speichern.
Prüfen, ob Autoscaling für den vorhandenen Knotenpool aktiviert ist
Sie prüfen, ob Ihr Cluster Autoscaling mit dem Google Cloud CLI oder der Google Cloud Console verwendet.
gcloud
Beschreiben Sie die Knotenpools im Cluster:
gcloud container node-pools describe NODE_POOL_NAME --cluster=CLUSTER_NAME |grep autoscaling -A 1
Dabei gilt:
POOL_NAME
ist der Name des neuen Knotenpools, den Sie auswählen können.CLUSTER_NAME
ist der Name des Clusters.
Wenn Autoscaling aktiviert ist, sieht die Ausgabe in etwa so aus:
autoscaling:
enabled: true
Console
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf den Tab Knoten.
Prüfen Sie unter Knotenpools den Status
Autoscalling
des Knotenpools.
Knotenpool erstellen, der die Optimierung nicht verwendeter Reservierungen priorisiert
Sie können das Flag --location_policy=ANY
verwenden, wenn Sie einen Knotenpool erstellen, um den Cluster Autoscaler anzuweisen, die Nutzung nicht verwendeter Reservierungen zu priorisieren:
gcloud container node-pools create POOL_NAME \
--cluster=CLUSTER_NAME \
--location_policy=ANY
Dabei gilt:
POOL_NAME
ist der Name des neuen Knotenpools, den Sie auswählen können.CLUSTER_NAME
ist der Name des Clusters.
Autoscaling für vorhandene Knotenpools deaktivieren
Sie können das Autoscaling für einen vorhandenen Knotenpool über die gcloud CLI oder die Google Cloud -Konsole deaktivieren.
gcloud
Mit dem Flag --no-enable-autoscaling
können Sie das Autoscaling für einen bestimmten Knotenpool deaktivieren:
gcloud container clusters update CLUSTER_NAME \
--no-enable-autoscaling \
--node-pool=POOL_NAME \
--location=CONTROL_PLANE_LOCATION
Dabei gilt:
CLUSTER_NAME
: der Name des Clusters, der aktualisiert werden soll.POOL_NAME
ist der Name des gewünschten Knotenpools.CONTROL_PLANE_LOCATION
: Der Compute Engine-Standort der Steuerungsebene des Clusters. Geben Sie für regionale Cluster eine Region und für zonale Cluster eine Zone an.
Die Clustergröße wird auf die Größe des aktuellen standardmäßigen Clusterknotenpools festgelegt und kann manuell angepasst werden.
Console
So deaktivieren Sie das Autoscaling für einen bestimmten Knotenpool:
Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf den Tab Knoten.
Klicken Sie unter Knotenpools auf den Namen des Knotenpools, den Sie ändern möchten, und klicken Sie dann auf edit Bearbeiten.
Entfernen Sie unter Größe das Häkchen aus dem Kästchen Autoscaling aktivieren.
Klicken Sie auf Speichern.
Größe eines Knotenpools ändern
Bei Clustern mit aktiviertem Autoscaling passt der Cluster Autoscaler die Knotenpools automatisch innerhalb der Grenzen an, die durch die Werte für die Mindestgröße (--min-nodes
) und die Maximalgröße (--max-nodes
) oder die minimale Gesamtgröße (--total-min-nodes
) und maximale Gesamtgröße (--total-max-nodes
) angegeben sind. Diese Flags schließen sich gegenseitig aus. Sie können die Größe eines Knotenpools durch Ändern dieser Werte nicht manuell anpassen.
Wenn Sie die Größe eines Knotenpools in Ihrem Cluster der aktiviertes Autoscaling hat manuell anpassen möchten, gehen Sie so vor:
- Deaktivieren Sie das Autoscaling für den Knotenpool.
- Passen Sie die Größe des Clusters manuell an.
- Aktivieren Sie das Autoscaling wieder und geben Sie die minimale und maximale Knotenpoolgröße an.
Pods auf bestimmten Knoten planen
Sie können je nach Anwendungsfall startup
- oder status
-Markierungen verwenden, um zu verhindern, dass Pods auf ausgewählten Knoten geplant werden.
Dieses Feature ist in GKE ab Version 1.28 verfügbar.
Startmarkierungen
Verwenden Sie startup
-Markierungen, wenn ein Vorgang abgeschlossen sein muss, bevor Pods auf dem Knoten ausgeführt werden können. Beispielsweise sollten Pods erst ausgeführt werden, wenn die Treiber auf dem Knoten installiert sind.
Cluster Autoscaler behandelt Knoten, die mit startup
-Markierungen markiert sind, als ungelesen, wird aber bei der vertikalen Skalierungslogik berücksichtigt, unter der Annahme, dass sie bald bereit sind.
Startmarkierungen werden als Markierungen mit dem Präfix startup-taint.cluster-autoscaler.kubernetes.io/
definiert.
Statusmarkierungen
Verwenden Sie status
-Markierungen, wenn GKE einen bestimmten Knoten nicht zum Ausführen von Pods verwenden sollte.
Cluster Autoscaler behandelt Knoten, die mit status
-Markierungen markiert sind, als bereit, ignoriert sie jedoch bei der vertikalen Skalierungslogik. Obwohl der markierte Knoten bereit ist, sollten keine Pods ausgeführt werden. Wenn die Pods mehr Ressourcen benötigen, skaliert GKE den Cluster vertikal und ignoriert die markierten Knoten.
Statusmarkierungen werden als Markierungen mit dem Präfix status-taint.cluster-autoscaler.kubernetes.io/
definiert.
Ignoriermarkierungen
Ignoriermarkierungen werden als Markierungen mit dem Präfix ignore-taint.cluster-autoscaler.kubernetes.io/
definiert.
Fehlerbehebung
Informationen zur Fehlerbehebung finden Sie auf den folgenden Seiten:
- Fehlerbehebung, wenn Cluster Autoscaler nicht herunterskaliert
- Fehlerbehebung, wenn Cluster Autoscaler nicht hochskaliert