Was ist der Kubernetes Cluster Autoscaler?
Der Kubernetes Cluster Autoscaler ist eine Open-Source-Komponente, die die Größe eines Kubernetes-Clusters automatisch an die aktuellen Workload-Anforderungen anpasst. Er überwacht Pods, die aufgrund unzureichender Ressourcen nicht eingeplant werden können, und skaliert das Cluster bei Bedarf hoch, indem er zusätzliche Nodes hinzufügt. Umgekehrt erkennt er nicht ausgelastete Nodes und skaliert das Cluster herunter, indem nicht benötigte Nodes entfernt werden – für optimale Ressourcennutzung und Kosteneffizienz.
Diese dynamische Skalierung sorgt für hohe Verfügbarkeit und Performance ohne manuelle Eingriffe. Der Cluster Autoscaler unterstützt mehrere Cloud-Anbieter, darunter AWS, Azure und Google Cloud, und integriert sich nahtlos in deren verwaltete Kubernetes-Angebote. Er nutzt anbieterspezifische APIs, um Nodes bei Bedarf bereitzustellen und außer Betrieb zu nehmen, sodass Unternehmen in Echtzeit auf wechselnde Traffic-Muster reagieren können.
Dieser Artikel ist Teil einer Serie über Kubernetes-Autoscaling.
In diesem Artikel:
- Was sind Helm Charts?
- Tutorial: Erste Schritte mit dem Cluster Autoscaler per Helm Chart
- Best Practices für das Cluster Autoscaler Helm Chart
Was sind Helm Charts?
Helm Charts sind standardisierte Pakete für Kubernetes-Anwendungen, die alle notwendigen YAML-Manifeste und Templates enthalten, um komplexe Workloads zu definieren, zu konfigurieren und bereitzustellen. Sie vereinfachen das Deployment, indem sie Anwendungsressourcen, Abhängigkeiten und Konfigurationswerte in einem einzigen, wiederverwendbaren Artefakt bündeln. Helm Charts können:
- versioniert werden
- geteilt werden
- in Repositories abgelegt werden
Mit Helm Charts können Teams Installation, Upgrade und Rollback von Anwendungen automatisieren – das reduziert das Risiko menschlicher Fehler und sorgt für Konsistenz über alle Umgebungen hinweg. Die Templating-Engine von Helm ermöglicht anpassbare Deployments, bei denen Standardwerte über eine Values-Datei oder Kommandozeilenargumente überschrieben werden können.
Quick Start: Cluster Autoscaler mit Helm Chart betreiben
Voraussetzungen für das Cluster Autoscaler Helm Chart
Stellen Sie vor der Installation des Cluster-Autoscaler-Charts sicher, dass Sie Helm 3+ und Kubernetes 1.35.x oder neuer verwenden. Azure AKS erfordert Kubernetes 1.10 oder neuer mit aktiviertem RBAC.
Der Cluster Autoscaler simuliert intern das Verhalten des Kubernetes-Schedulers. Zwar können andere Kubernetes-Versionen durch Überschreiben des Container-Images funktionieren, doch nicht übereinstimmende Versionen können subtile Scheduling-Probleme verursachen. Das aktuelle Chart verwendet die Helm-Chart-API-Version v2, daher werden Helm-Versionen vor 3 nicht unterstützt.
Wenn Sie von einer 1.X-Version des cluster-autoscaler-chart migrieren, deinstallieren Sie dieses Release, bevor Sie cluster-autoscaler in Version 9.0.0 oder neuer installieren. Die älteren 1.X-Chart-Releases sind veraltet.
Schritt 1: Das Cluster Autoscaler Helm Repository hinzufügen
Das Cluster-Autoscaler-Chart wird über den Chart-Pfad autoscaler/cluster-autoscaler installiert. Stellen Sie vor der Installation sicher, dass das Repository mit diesem Chart in Ihrer Helm-Umgebung konfiguriert ist.
Mit seinen Standardwerten allein erzeugt das Chart kein funktionsfähiges Autoscaling-Deployment. Bei der Installation müssen Sie entweder die Auto-Discovery von Node-Gruppen oder statische Node-Gruppen konfigurieren. Von der gleichzeitigen Nutzung beider Ansätze wird abgeraten.
Setzen Sie bei Auto-Discovery autoDiscovery.clusterName sowie alle erforderlichen anbieterspezifischen Werte. Für die statische Konfiguration definieren Sie eine oder mehrere Gruppen über autoscalingGroups oder autoscalingGroupsnamePrefix.
Schritt 2: Cluster Autoscaler mit Helm installieren
Installieren Sie das Chart mit helm install und übergeben Sie die für Ihren Cloud-Anbieter erforderliche Konfiguration. Für Konfigurationen in einer Values-Datei verwenden Sie:
helm install my-release autoscaler/cluster-autoscaler -f myvalues.yaml
Ihre Values müssen die Node-Gruppen identifizieren, die der Autoscaler verwalten darf. Sie können Auto-Discovery über autoDiscovery.clusterName konfigurieren oder Gruppen samt minimaler und maximaler Größe explizit definieren.
Prüfen Sie nach der Installation die Autoscaler-Logs, um zu bestätigen, dass die Hauptschleife läuft. Falls nicht, untersuchen Sie den erzeugten Pod und überprüfen Sie die an den cluster-autoscaler-Befehl übergebenen Argumente.
Schritt 3: Cluster Autoscaler auf AWS mit Helm installieren
Auf AWS kann der Cluster Autoscaler Auto Scaling Groups (ASGs) automatisch erkennen. Taggen Sie jede verwaltete ASG mit den Schlüsseln k8s.io/cluster-autoscaler/enabled und k8s.io/cluster-autoscaler/<CLUSTER NAME>. Nur die Tag-Schlüssel sind relevant.
Installieren Sie das Chart anschließend mit Cluster-Namen und AWS-Region:
helm install my-release autoscaler/cluster-autoscaler \
--set autoDiscovery.clusterName=<CLUSTER NAME> \
--set awsRegion=<YOUR AWS REGION>
Sie können bei der Installation auch awsAccessKeyID und awsSecretAccessKey angeben. Für Amazon EKS besteht alternativ die Möglichkeit, den Service Account des Autoscalers mit einer IAM-Rolle zu verknüpfen und deren ARN über die Service-Account-Annotation zu übergeben.
Wenn Sie keine Auto-Discovery nutzen möchten, geben Sie ASGs manuell an:
helm install my-release autoscaler/cluster-autoscaler \
--set "autoscalingGroups[0].name=your-asg-name" \
--set "autoscalingGroups[0].maxSize=10" \
--set "autoscalingGroups[0].minSize=1"
Der Worker, auf dem der Autoscaler läuft, benötigt die erforderlichen IAM-Berechtigungen, um die relevanten AWS-Auto-Scaling-Ressourcen einzusehen und zu ändern.
Weiterführende Inhalte: Lesen Sie unseren Vergleich Karpenter vs. Cluster Autoscaler
Schritt 4: Das Cluster Autoscaler Helm Chart aktualisieren
Berücksichtigen Sie beim Upgrade älterer Installationen die Änderungen an den Chart-Versionen. Releases ab Version 9.0.0 verwenden den Chart-Namen cluster-autoscaler. Um von einem veralteten 1.X-Release des cluster-autoscaler-chart umzusteigen, deinstallieren Sie zunächst die bestehende 1.X-Installation und installieren anschließend Version 9.0.0 oder neuer.
Version 9.1.0 ändert zudem die Bedeutung von envFromConfigMap. Diese Einstellung muss den Namen einer ConfigMap enthalten, auf die envFrom verweist. Konfigurationen, die auf dem früheren envFromConfigMap-Verhalten basieren, sollten diese Einstellung in extraEnvConfigMaps umbenennen.
Ein Release lässt sich bei Bedarf wie folgt entfernen:
helm uninstall my-release
Damit werden die mit diesem Helm-Release verknüpften Kubernetes-Komponenten gelöscht. Prüfen Sie vor einem Versionswechsel die Konfigurationswerte, die sich zwischen installierter Version und Ziel-Chart-Version geändert haben könnten.
Best Practices für das Cluster Autoscaler Helm Chart
Die folgenden Praktiken sollten Sie bei der Arbeit mit dem Cluster Autoscaler und Helm Charts im Blick behalten.
1. Right-Sizing für CPU- und Memory-Requests
Das Right-Sizing der CPU- und Memory-Requests Ihrer Workloads ist beim Einsatz des Cluster Autoscalers unverzichtbar. Sind die Requests zu hoch, stellt der Scheduler möglicherweise zu viele Nodes bereit – das verschwendet Ressourcen und treibt die Kosten in die Höhe. Zu niedrige Requests bergen dagegen das Risiko von Ressourcenkonflikten und instabilen Anwendungen.
Wichtige Maßnahmen:
- Analysieren Sie die historische Ressourcennutzung und legen Sie Requests und Limits auf Basis des tatsächlichen Bedarfs fest – nicht anhand von Standardwerten oder Schätzungen.
- Überprüfen und justieren Sie diese Einstellungen regelmäßig, wenn sich Ihre Workloads weiterentwickeln.
- Nutzen Sie Kubernetes-Monitoring-Tools, um den Ressourcenverbrauch in Echtzeit zu beobachten und Optimierungspotenziale zu erkennen.
Präzise Ressourcen-Requests steigern die Effizienz des Autoscalers: Neue Nodes werden nur hinzugefügt, wenn sie wirklich nötig sind, und vorhandene Ressourcen werden effektiv genutzt.
2. Workload-Rightsizing und Node-Autoscaling als ein System betrachten
Workload-Rightsizing und Node-Autoscaling sollten nicht isoliert verwaltet werden. Änderungen an den Ressourcen-Requests der Anwendungen wirken sich direkt darauf aus, wie der Autoscaler das Cluster skaliert. Werden Workloads dauerhaft überdimensioniert, fügt der Autoscaler unnötig Nodes hinzu; eine Unterdimensionierung kann dagegen zu nicht einplanbaren Pods und Performance-Einbußen führen. Wer beide Prozesse koordiniert, hält Ressourcenverfügbarkeit und Kosten im Gleichgewicht.
Wichtige Maßnahmen:
- Setzen Sie automatisierte Tools oder Richtlinien ein, die Workload-Requests und Node-Gruppen-Größen gemeinsam anpassen.
- Sorgen Sie für regelmäßigen Austausch zwischen Entwicklungs- und Betriebsteams, damit Skalierungsentscheidungen den tatsächlichen Anforderungen der Anwendungen entsprechen.
Wer Rightsizing und Autoscaling als zusammenhängendes System begreift, erreicht eine bessere Ressourcennutzung, stabilere Anwendungen und höhere Kosteneffizienz.
Weiterführende Inhalte: Lesen Sie unseren Leitfaden zum Kubernetes Vertical Pod Autoscaler
3. Ressourcennutzung kontinuierlich überprüfen
Kontinuierliches Monitoring der Ressourcennutzung ist entscheidend für ein effizientes Autoscaling-Setup. Statische Ressourcenzuweisungen veralten schnell, wenn sich die Anforderungen der Anwendungen ändern – die Folge sind Ineffizienzen oder Performance-Probleme. Die regelmäßige Analyse der Nutzungsdaten ermöglicht fundierte Anpassungen an Workload-Requests und Autoscaler-Einstellungen.
Wichtige Maßnahmen:
- Nutzen Sie Kubernetes-Dashboards und Monitoring-Plattformen, um CPU-, Memory- und Node-Auslastung im Zeitverlauf zu verfolgen.
- Etablieren Sie einen Prozess für regelmäßige Überprüfungen, etwa monatliche Audits oder automatisierte Alerts bei ungewöhnlichen Nutzungsmustern.
- Reagieren Sie schnell auf Veränderungen im Ressourcenverbrauch, um Überprovisionierung zu vermeiden und eine angemessene Skalierung des Clusters sicherzustellen.
Eine laufende Überprüfung unterstützt ein proaktives Vorgehen, senkt die Betriebskosten und hält die Umgebung reaktionsfähig.
4. Node-Gruppen für effizientes Bin Packing gestalten
Effizientes Bin Packing bedeutet, Workloads so auf Nodes zu verteilen, dass die Ressourcennutzung maximiert und Verschwendung minimiert wird. Wählen Sie beim Design Ihrer Node-Gruppen Instanztypen und -größen, die zu Ihren Workload-Profilen passen.
Wichtige Maßnahmen:
- Vermeiden Sie zu große oder zu kleine Nodes, die zu Ressourcenfragmentierung oder geringer Auslastung führen.
- Gruppieren Sie ähnliche Workloads, um berechenbarere Nutzungsmuster zu fördern und die Autoscaler-Konfiguration zu vereinfachen.
- Passen Sie die Node-Gruppen-Konfigurationen an, wenn sich Ihre Anwendungen weiterentwickeln.
- Beobachten Sie die Verteilung der Workloads und identifizieren Sie Möglichkeiten, Node-Gruppen für besseres Packing zusammenzulegen oder aufzuteilen.
Effizientes Bin Packing reduziert die Gesamtzahl benötigter Nodes, optimiert die Autoscaler-Performance und senkt die Infrastrukturkosten, weil vorhandene Ressourcen optimal genutzt werden.
5. HPA und Cluster Autoscaler aufeinander abstimmen
Der Horizontal Pod Autoscaler (HPA) und der Cluster Autoscaler müssen harmonisch zusammenspielen, um eine optimale Skalierung zu gewährleisten. Der HPA passt die Anzahl der Pods anhand von Workload-Metriken an, während der Cluster Autoscaler die zugrunde liegenden Nodes verwaltet. Skaliert der HPA Pods über die verfügbare Node-Kapazität hinaus, muss der Cluster Autoscaler schnell genug neue Nodes bereitstellen können. Schlecht abgestimmte Konfigurationen können zu fehlgeschlagenem Pod-Scheduling oder unnötiger Ressourcenzuweisung führen.
Wichtige Maßnahmen:
- Stimmen Sie Skalierungsrichtlinien und Schwellenwerte zwischen HPA und Cluster Autoscaler aufeinander ab.
- Überwachen Sie das Zusammenspiel beider Komponenten und nutzen Sie Metriken und Logs, um Engpässe oder Verzögerungen bei Skalierungsaktionen zu erkennen.
- Justieren Sie HPA-Ziele und Cluster-Autoscaler-Parameter, um eine ausgewogene, reaktionsschnelle Skalierung zu erreichen.
Wenn beide Komponenten Hand in Hand arbeiten, sinken Ausfallzeiten, steigt die Anwendungsverfügbarkeit und Ressourcen werden effizient genutzt.
Mit PerfectScale die Effizienz des Cluster Autoscalers maximieren
Node-Autoscaler wie Cluster Autoscaler und Karpenter skalieren Nodes bedarfsgerecht hoch und herunter, verbessern die Cluster-Verfügbarkeit und senken Leerlaufkosten. Doch selbst ein gut konfigurierter Autoscaler stößt an Grenzen, wenn die darunterliegenden Workloads falsch konfiguriert sind: Überdimensionierte Container verschwenden Kapazität und zwingen den Autoscaler, mehr Nodes als nötig hinzuzufügen; unterdimensionierte Container verursachen Pod-Evictions und setzen die Nodes unter Druck; und ineffizientes Bin Packing lässt Ressourcen ungenutzt, während es unnötige Skalierungsereignisse auslöst. PerfectScale löst diese Probleme auf Workload- und Node-Ebene, damit Ihre Autoscaling-Konfiguration tatsächlich die versprochene Effizienz liefert.
Zentrale Funktionen von PerfectScale für Kubernetes-Autoscaling:
- Proaktive Erkennung von Konfigurationsfehlern: Analysiert Workloads kontinuierlich, um Konfigurationsfehler wie CPU Request Not Set, Memory Request Not Set und Memory Limit Not Set zu identifizieren und zu beheben – das verhindert unvorhersehbare Evictions, Node-Overcommitment und ineffizientes Autoscaling.
- Autonomes Workload-Right-Sizing: Passt Workload-Ressourcen sofort an die tatsächliche Auslastung an und verbessert das Pod-Bin-Packing für effizienteres Autoscaling – ganz ohne manuelles Eingreifen.
- Transparenz über Autoscaling-Gruppen und Node-Pools: Bietet Einblick in Kosten und Auslastung Ihrer Autoscaling-Gruppen und Node-Pools, damit Sie Ineffizienzen im gesamten Cluster gezielt aufspüren können.
- Optimale Auswahl der Node-Typen: Unterstützt Sie bei der Wahl von Node-Typen, die die Auslastung verbessern, eine präzise Ressourcenverteilung ermöglichen und die Kosteneffizienz maximieren.
- Breite Autoscaler-Unterstützung: Arbeitet mit Karpenter, Cluster Autoscaler und Node Auto Provisioning zusammen und kombiniert Optimierung auf Node-Ebene mit Rightsizing auf Pod-Ebene – für besseres Bin Packing und schnellere Skalierungsentscheidungen.
Erfahren Sie mehr darüber, wie Sie Ihr Kubernetes-Node-Autoscaling mit PerfectScale maximieren