Cluster automatisch skalieren

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:

  1. Rufen Sie in der Google Cloud Console die Seite Kubernetes-Cluster erstellen auf.

    Zur Seite „Kubernetes-Cluster erstellen“

  2. Konfigurieren Sie den Cluster wie gewünscht.

  3. Klicken Sie im Navigationsbereich unter Knotenpools auf default-pool.

  4. Klicken Sie das Kästchen Autoscaling aktivieren an.

  5. Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.

  6. 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:

  1. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Konfigurieren Sie den Knotenpool wie gewünscht.

  5. Klicken Sie unter Größe das Kästchen Autoscaling aktivieren an.

  6. Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.

  7. 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 Sie default-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:

  1. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie unter Knotenpools auf den Namen des Knotenpools, den Sie ändern möchten, und klicken Sie dann auf Bearbeiten.

  5. Klicken Sie unter Größe das Kästchen Autoscaling aktivieren an.

  6. Ändern Sie die Werte in den Feldern Mindestanzahl von Knoten und Maximale Anzahl von Knoten nach Bedarf.

  7. 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

  1. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Knoten.

  4. 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:

  1. Öffnen Sie in der Google Cloud Console die Seite Google Kubernetes Engine.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf den Tab Knoten.

  4. Klicken Sie unter Knotenpools auf den Namen des Knotenpools, den Sie ändern möchten, und klicken Sie dann auf Bearbeiten.

  5. Entfernen Sie unter Größe das Häkchen aus dem Kästchen Autoscaling aktivieren.

  6. 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:

  1. Deaktivieren Sie das Autoscaling für den Knotenpool.
  2. Passen Sie die Größe des Clusters manuell an.
  3. 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:

Nächste Schritte