Cluster-Autoscaling
In diesem Dokument wird Cluster-Autoscaling beschrieben, der automatisch die Größe Ihrer Knotenpools steuert. Cluster Autoscaler wird aktiviert, wenn Sie Mindest- und Höchstwerte für die Anzahl der Knoten in einem Knotenpool angeben. Sie geben diese Werte an, wenn Sie einen Knotenpool erstellen oder einen Knotenpool aktualisieren.
GKE on Azure verwendet die Open-Source-Cluster Autoscaler von Kubernetes.
Knotenpool automatisch skalieren
Das Cluster-Autoscaling passt die Größe der Knoten in einem Knotenpool automatisch an die Anforderungen der Arbeitslasten an. Sie müssen weder Knoten manuell hinzufügen oder entfernen noch Ihre Knotenpools überdimensionieren. Stattdessen geben Sie eine Mindest- und eine maximale Größe für den Knotenpool an. Alles andere erfolgt automatisch.
Wenn Ressourcen beim Autoscaling Ihres Clusters gelöscht oder verschoben werden müssen, können Ihre Arbeitslasten vorübergehend unterbrochen werden. Umfasst eine Arbeitslast beispielsweise einen Controller mit einem einzelnen Replikat, kann der Pod dieses Replikats auf einen anderen Knoten verschoben werden, wenn der aktuelle Knoten gelöscht wird. Aus diesem Grund müssen Sie Ihre Arbeitslasten so entwerfen, dass mögliche Unterbrechungen toleriert werden oder wichtige Pods nicht unterbrochen werden.
So funktioniert das Cluster-Autoscaling
Cluster Autoscaler wird jeweils für einen Knotenpool aktiviert. Wenn Sie das Cluster Autoscaling zum Konfigurieren eines Knotenpools verwenden, geben Sie eine minimale und eine maximale Größe für den Knotenpool an. Sie können die Mindest- und Maximalgröße ändern, wenn Sie einen Knotenpool erstellen oder Knotenpool aktualisieren.
Das Cluster-Autoscaling vergrößert bzw. verkleinert den Knotenpool automatisch entsprechend den Ressourcenanfragen (statt der tatsächlichen Ressourcennutzung) in diesem Knotenpool. Das Cluster-Autoscaling fügt Knoten hinzu, wenn Pod-Objekte nicht planbar sind und nicht genügend Kapazität im Knotenpool vorhanden ist, um Anfragen zu erfüllen.
Das Cluster-Autoscaling entfernt außerdem Knoten, wenn diese nicht ausgelastet sind und alle Pod-Objekte auf einer kleineren Anzahl von Knoten geplant werden können. Wenn der Knoten nach 10 Minuten nicht ordnungsgemäß geleert werden kann, wird der Knoten zwangsweise beendet. Dieser Zeitraum kann nicht konfiguriert werden.
Wenn ein Pod zu wenige Ressourcen anfordert (z. B. wenn die Standardeinstellungen unzureichend sind), wird diese Situation von Cluster-Autoscaling nicht korrigiert. Sie können dafür sorgen, dass Cluster-Autoscaling so präzise wie möglich funktioniert, wenn Sie angemessene Ressourcenanfragen für alle Ihre Arbeitslasten stellen. Weitere Informationen finden Sie unter Ressourcen für Container verwalten.
Pod-Anmerkungen und Verhalten des Cluster-Autoscalings
Der Cluster-Autoscaler berücksichtigt bei der Skalierung bestimmte Pod-Anmerkungen. Die Cluster Autoscaler unterstützt beispielsweise Pod-Anmerkungen wie "cluster-autoscaler.kubernetes.io/safe-to-evict": "false"
. Wenn diese Anmerkung auf „false“ gesetzt ist, wird verhindert, dass der Knoten, auf dem der Pod gehostet wird, während eines Herunterskalierungsereignisses entfernt wird. Wenn Sie diese Anmerkungen verstehen und verwenden, können Sie das Verhalten des Autoscalers so optimieren, dass es den Anforderungen Ihrer Arbeitslast entspricht.
Weitere Informationen zu Pod-Anmerkungen und ihren Auswirkungen auf den Cluster-Autoscaler finden Sie in den folgenden Ressourcen:
- Welche Arten von Pods können Cluster Autoscaler am Entfernen von Knoten hindern?
- Offizielle Kubernetes Cluster Autoscaler-Dokumentation
Einsatzkriterien
Das Cluster-Autoscaling geht bei der Änderung der Größe eines Knotenpools von folgenden Annahmen aus:
- Alle replizierten Pod-Objekte können auf einem anderen Knoten neu gestartet werden. Dies führt unter Umständen zu einer kurzen Störung. Wenn Ihre Arbeitslast keine Unterbrechungen toleriert, konfigurieren Sie die Arbeitslast so, dass sie in einem Knotenpool mit deaktiviertem Autoscaling ausgeführt wird. Weitere Informationen finden Sie unter Planung mit Knotenmarkierungen steuern.
- Das Cluster-Autoscaling kann alle manuellen Knotenverwaltungsvorgänge überschreiben.
- Alle Knoten in einem einzelnen Knotenpool haben dieselben Labels.
- Das Cluster-Autoscaling wählt eine Knotengruppe mit der geringsten inaktiven CPU oder dem nicht verwendeten Speicher nach dem Hochskalieren aus. Dieses Verhalten wirkt sich darauf aus, welche Knotenpools hochskaliert werden, wenn sich im selben Cluster verschiedene Knotengrößen befinden (z. B. Knoten mit hoher CPU-Anzahl oder großem Arbeitsspeicher).
Mindest- und Maximalgröße von Knotenpools
Sie können die Mindest- und Maximalgröße für jeden Knotenpool in Ihrem Cluster mit den Flags min-nodes
und max-nodes
angeben. Wenn Sie das Autoscaling deaktivieren möchten, legen Sie für min-nodes
und max-nodes
denselben Wert fest. Cluster Autoscaler trifft die Skalierungsentscheidungen innerhalb dieser Größengrenzen.
Achten Sie beim Festlegen der maximalen Größe der Knotenpools darauf, dass sie groß genug ist, um alle Arbeitslasten auszuführen. Wenn die Knotenpools in Ihrem Cluster nicht genügend Arbeitsspeicher und CPU haben, um alle Ihre Arbeitslasten auszuführen, können Ausfälle auftreten.
PodDisruptionBudget
zum Schutz von Arbeitslasten verwenden
Sie können GKE in Azure mit einer PodDisruptionBudget
konfigurieren, um Unterbrechungen zu verhindern. Wenn Sie eine PodDisruptionBudget
erstellen, geben Sie die Mindestanzahl der Pod-Replikate an, die verfügbar sein sollen, oder die maximale Anzahl der Pod-Replikate, die zu einem bestimmten Zeitpunkt nicht verfügbar sein können. Weitere Informationen finden Sie unter Unterbrechungsbudget für Ihre Anwendung festlegen.
Weitere Informationen
Weitere Informationen zu Cluster Autoscaler und zur Vermeidung von Störungen finden Sie in den folgenden Ressourcen:
- Häufig gestellte Fragen zur Kubernetes Cluster Autoscaler
- Wie funktioniert das Herunterskalieren?
- Unterstützt der Cluster-Autoscaler
PodDisruptionBudget
beim Herunterskalieren?