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:
- Bearbeiten Sie die Nutzercluster-Konfigurationsdatei, um einen neuen Knotenpool hinzuzufügen, und fügen Sie das Feld
autoscaling
ein. Passen Sie die Werte vonminReplicas
undmaxReplicas
nach Bedarf an.
nodePools: - name: my-new-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
- 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:
Bearbeiten Sie einen bestimmten
nodePool
in der Nutzercluster-Konfigurationsdatei und fügen Sie das Feldautoscaling
ein. Passen Sie die Werte vonminReplicas
undmaxReplicas
nach Bedarf an.nodePools:
- name: my-existing-node-pool … replicas: 3 ... autoscaling: minReplicas: 1 maxReplicas: 5
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:
Bearbeiten Sie die Nutzercluster-Konfigurationsdatei und entfernen Sie das Feld
autoscaling
für diesen Knotenpool.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 Pods
kube-system
PodDisruptionBudget
hinzufügen. Weitere Informationen zum manuellen Hinzufügen einesPodDisruptionBudget
für diekube-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:
- Wie funktioniert das Herunterskalieren?
- Funktioniert Cluster Autoscaler mit PodDisruptionBudget beim Herunterskalieren?
- Welche Arten von Pods können Cluster Autoscaler am Entfernen von Knoten hindern?