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 Autoscaler verwenden

Im folgenden Abschnitt wird die Nutzung von Cluster Autoscaler erklärt.

Cluster mit Autoscaling erstellen

gcloud

Verwenden Sie zum Erstellen eines Clusters mit aktiviertem Autoscaling das Flag --enable-autoscaling und geben Sie --min-nodes und --max-nodes wie im folgenden Befehl an:

gcloud container clusters create CLUSTER_NAME \
    --enable-autoscaling \
    --num-nodes NUM_NODES \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
   [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

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 von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden soll.
  • MAX_NODES: Die maximale Anzahl von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden sollen.
  • COMPUTE_REGION: Wenn Sie einen regionalen Cluster erstellen, geben Sie die Region an, in der der Cluster erstellt werden soll.
  • COMPUTE_ZONE: Wenn Sie einen zonalen Cluster erstellen, geben Sie die Zone an, in der der Cluster erstellt werden soll.

Beispiel: Cluster mit aktiviertem Autoscaling für Knoten erstellen

Der folgende Befehl erstellt einen Cluster mit 30 Knoten: Autoscaling für Knoten ist aktiviert und passt die Anzahl der Knoten entsprechend der Clusterlast automatisch an. Der Cluster Autoscaler kann die Größe des Standardknotenpools auf 15 Knoten verringern oder den Knotenpool auf bis zu 50 Knoten erhöhen.

gcloud container clusters create my-cluster --enable-autoscaling \
    --num-nodes 30 \
    --min-nodes 15 --max-nodes 50 \
    --zone us-central1-c

Console

So erstellen Sie einen neuen Cluster, in dem für den Standardknotenpool Autoscaling aktiviert ist:

  1. Rufen Sie in der Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie auf Erstellen.

  3. Konfigurieren Sie den Cluster wie gewünscht.

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

  5. Klicken Sie 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.

Knotenpools mit Autoscaling hinzufügen

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 \
    --zone COMPUTE_ZONE

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 von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden soll.
  • MAX_NODES: Die maximale Anzahl von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden sollen.
  • COMPUTE_ZONE: Die Zone, in der das Autoscaling neue Knoten erstellen soll.

Beispiel: Knotenpool mit aktiviertem Autoscaling für Knoten hinzufügen

Mit dem folgenden Befehl wird ein Knotenpool der Größe 3 (Standard) erstellt. Das Knoten-Autoscaling erfolgt auf Basis der Clusterlast, wobei der Knotenpool maximal auf 5 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 \
    --zone us-central1-c

Console

So fügen Sie einem vorhandenen Cluster einen Knotenpool mit Autoscaling hinzu:

  1. Rufen Sie in der Cloud Console die Seite Google Kubernetes Engine auf:

    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

gcloud

Verwenden Sie das Flag --enable-autoscaling wie im folgenden Befehl, um die automatische Skalierung für einen vorhandenen Knotenpool zu aktivieren:

gcloud container clusters update CLUSTER_NAME \
    --enable-autoscaling \
    --node-pool POOL_NAME \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES \
    [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

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 von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden soll.
  • MAX_NODES: Die maximale Anzahl von Knoten, die automatisch für den angegebenen Knotenpool skaliert werden sollen.
  • COMPUTE_REGION: Geben Sie für regionale Cluster die Region des Clusters an.
  • COMPUTE_ZONE: Geben Sie für zonale Cluster die Zone des Clusters an.

Console

So aktivieren Sie Autoscaling für einen vorhandenen Knotenpool:

  1. Rufen Sie in der Cloud Console die Seite Google Kubernetes Engine auf:

    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.

Autoscaling für vorhandene Knotenpools deaktivieren

gcloud

Um die automatische Skalierung für einen bestimmten Knotenpool zu deaktivieren, verwenden Sie das Flag --no-enable-autoscaling, wie im folgenden Befehl:

gcloud container clusters update CLUSTER_NAME \
    --no-enable-autoscaling \
    --node-pool POOL_NAME \
   [--region COMPUTE_REGION | --zone COMPUTE_ZONE]

Dabei gilt:

  • CLUSTER_NAME: der Name des Clusters, der aktualisiert werden soll.
  • POOL_NAME ist der Name des gewünschten Knotenpools.
  • COMPUTE_REGION: Geben Sie für regionale Cluster die Region des Clusters an.
  • COMPUTE_ZONE: Geben Sie für zonale Cluster die Zone des Clusters 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. Rufen Sie in der Cloud Console die Seite Google Kubernetes Engine auf:

    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 wird die Größe des Knotenpools von Cluster Autoscaler automatisch an die Grenzen angepasst, die durch die Mindestgröße (--min-nodes) und die Maximalgröße (--max-nodes) angegeben werden. 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.

Fehlerbehebung

Im Folgenden finden Sie Informationen zur Fehlerbehebung für Cluster Autoscaler:

  • Möglicherweise stellen Sie eine der Einschränkungen für Cluster Autoscaler fest.
  • Wenn Sie Probleme mit dem Herunterskalieren des Clusters haben, lesen Sie die Informationen unter Pod-Planung und -Unterbrechung. Möglicherweise müssen Sie den Podskube-system PodDisruptionBudget hinzufügen. Weitere Informationen zum manuellen Hinzufügen eines PodDisruptionBudget für die kube-system-Pods finden Sie in den FAQ zu Kubernetes-Cluster-Autoscaling.
  • Cluster Autoscaler berücksichtigt beim Herunterskalieren die in Pods festgelegten Planungs- und Bereinigungsregeln. Diese Einschränkungen können das Löschen eines Knotens durch Cluster Autoscaler verhindern. Ein Knoten wird unter Umständen nicht gelöscht, wenn er einen Pod mit einer der folgenden Bedingungen enthält:
    • Die Affinitäts- oder Anti-Affinitätsregeln des Pods verhindern eine Neuplanung.
    • Der Pod hat einen lokalen Speicher.
    • Der Pod wird nicht von einem Controller wie einem Deployment, StatefulSet, Job oder ReplicaSet verwaltet.

Weitere Informationen zu Cluster Autoscaling und zur Vermeidung von Störungen finden Sie in den FAQ zu Kubernetes-Cluster-Autoscaling:

Nächste Schritte