Cluster Autoscaler

10

Auf dieser Seite erfahren Sie, wie Sie Cluster automatisch skalieren. In diesem Artikel wird die Funktionsweise von Cluster Autoscaler beschrieben.

Cluster-Autoscaling passt die Anzahl der Knoten in einem bestimmten Knotenpool an die Anforderungen Ihrer Arbeitslasten an. Sie geben minReplicas- und maxReplicas-Werte für jeden Knotenpool in Ihrem Cluster an.

Für einen einzelnen Knotenpool muss minReplicas ≥ 1 sein. Die Summe der unmarkierten Nutzerclusterknoten muss jedoch mindestens 3 sein. Dies bedeutet, dass die Summe der minReplicas-Werte für alle automatisch skalierten Knotenpools plus die Summe der replicas-Werte für alle nicht automatisch skalierten Knotenpools mindestens 3 sein muss.

Nutzercluster mit Autoscaling erstellen

Zum Erstellen eines Nutzerclusters mit Autoscaling fügen Sie das Feld autoscaling dem Abschnitt nodePools in der Nutzercluster-Konfigurationsdatei hinzu.

nodePools:
- name: pool‐1
  …
  replicas: 3
  ...
  autoscaling:
    minReplicas: 1
    maxReplicas: 5

Diese Konfiguration erstellt einen Knotenpool mit drei Replikaten und wendet Autoscaling mit einer Knotenpool-Mindestgröße von 1 und einer maximalen Knotenpoolgröße von 5 an.

Der minReplicas-Wert muss ≥ 1 sein.

Knotenpool mit Autoscaling hinzufügen

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

  1. Bearbeiten Sie die Nutzercluster-Konfigurationsdatei, um einen neuen Knotenpool hinzuzufügen, und fügen Sie das Feld autoscaling ein. Passen Sie die Werte von minReplicas und maxReplicas nach Bedarf an.
nodePools:
- name: my-new-node-pool
  …
  replicas: 3
  ...
  autoscaling:
    minReplicas: 1
    maxReplicas: 5
  1. Führen Sie den Befehl gkectl update cluster --config <var class="edit">USER_CLUSTER_CONFIG</var> --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> aus:

Vorhandenen Knotenpool für Autoscaling aktivieren

So aktivieren Sie Autoscaling für einen Knotenpool in einem vorhandenen Cluster:

  1. Bearbeiten Sie einen bestimmten nodePool in der Nutzercluster-Konfigurationsdatei und fügen Sie das Feld autoscaling ein. Passen Sie die Werte von minReplicas und maxReplicas nach Bedarf an.

    nodePools:

    • name: my-existing-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
  2. Führen Sie den Befehl gkectl update cluster --config <var class="edit">USER_CLUSTER_CONFIG</var> --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> aus:

Autoscaling für vorhandene Knotenpools deaktivieren

So deaktivieren Sie das Autoscaling für einen bestimmten Knotenpool:

  1. Bearbeiten Sie die Nutzercluster-Konfigurationsdatei und entfernen Sie das Feld autoscaling für diesen Knotenpool.

  2. Führen Sie den Befehl gkectl update cluster aus:

Verhalten des Cluster-Autoscalings prüfen

Sie können auf verschiedene Weise ermitteln, was das Cluster-Autoscaling tut.

Cluster-Autoscaling-Logs prüfen

Suchen Sie zuerst nach dem Namen des Cluster-Autoscaling-Pods. Führen Sie diesen Befehl aus und ersetzen Sie dabei USER_CLUSTER_NAME durch den Nutzerclusternamen:

kubectl --kubeconfig ADMIN_CLUSTER_KUBECONFIG get pods -n USER_CLUSTER_NAMEvar> | grep cluster-autoscaler

Ersetzen Sie POD_NAME durch den Pod-Namen, um die Logs des Cluster Autoscaler-Pods zu prüfen:

kubectl --kubeconfig ADMIN_KUBECONFIG logs cluster-autoscaler-POD_NAME --container cluster-autoscaler ADMIN_KUBECONFIG

Konfigurationsplan prüfen

Das Cluster-Autoscaling veröffentlicht den kube-system/cluster-autoscaling-status-Konfigurationsplan. Führen Sie den folgenden Befehl aus, um diesen Plan aufzurufen:

run kubectl --kubeconfig USER_KUBECONFIG get configmap cluster-autoscaler-status -n kube-system -o yaml

Cluster-Autoscaling-Ereignisse prüfen

Hier können Sie Cluster-Autoscaling-Ereignisse prüfen:

  • Auf Pods (insbesondere diejenigen, die nicht geplant werden können oder sich auf nicht ausgelasteten Knoten befinden)
  • Auf Knoten
  • Im kube-system/cluster-autoscaling-status-Konfigurationsplan

Problembehebung

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: