Azure Kubernetes Service (AKS) Skalierungsübersicht – HPA, VPA, Cluster Autoscaler und KEDA

Wenn Sie Anwendungen in Azure Kubernetes Service (AKS) ausführen, können Sie Pods, Podressourcen, Knoten oder ereignisgesteuerte Workloads skalieren, um Änderungen an der Nachfrage abzugleichen. AKS unterstützt manuelle Skalierung, Horizontal Pod Autoscaler (HPA), Vertical Pod Autoscaler (VPA), Cluster Autoscaler, Kubernetes Event-driven Autoscaling (KEDA), die automatische Knotenbereitstellung und Burstskalierung mit Azure Container Instances (ACI).

Auswählen der richtigen Skalierungsmethode

Skalierungsmethode Am besten geeignet für Schlüsselmetrik Guide
Horizontal Pod Autoscaler (HPA) Zustandslose oder partitionierbare Workloads mit variabler Nachfrage CPU-Auslastung, RPS, Warteschlangentiefe Wann sollte ich den Horizontal Pod Autoscaler (HPA) in Kubernetes verwenden?
Vertical Pod Autoscaler (VPA) Nicht parallelisierbare Workloads; bedarfsgerechte Dimensionierung von Pod-Ressourcenanforderungen CPU-/Arbeitsspeicherressourcenauslastung Verwenden Sie Vertical Pod Autoscaler in AKS
Cluster Autoscaler Kapazität auf Node-Ebene, wenn Pods im Status „Pending“ verbleiben Ausstehende Pods Verwenden Sie den Cluster Autoscaler in AKS
KEDA Ereignisgesteuerte Arbeitslasten; Scale-to-Zero muss unterstützt werden Warteschlangenlänge, Ereignisrückstand KEDA-Add-On –Übersicht
ACI-Burst-Skalierung Spitzenbehandlung über die Kapazität des Knotenpools hinaus Nachfragespitze Erstellen virtueller Knoten mit Azure Container Instances

Manuelles Skalieren von Pods oder Knoten

Sie können Podreplikate und Knoten manuell skalieren, um zu testen, wie Ihre Anwendung auf Änderungen in verfügbaren Ressourcen reagiert oder um eine feste Kapazität aufrechtzuerhalten. Um manuell zu skalieren, definieren Sie die erforderliche Replikat- oder Knotenanzahl. Kubernetes erstellt oder entfernt dann Pods, während AKS Knoten aus dem entsprechenden Knotenpool hinzufügt oder entfernt.

Wenn Sie Knoten verkleinern, ruft AKS die relevante Azure Compute-API für den Computetyp des Clusters auf. Bei Clustern, die auf Virtual Machine Scale Sets basieren, bestimmt die Virtual Machine Scale Sets-API, welche Knoten entfernt werden sollen. Weitere Informationen finden Sie in den Häufig gestellten Fragen zu Virtual Machine Scale Sets.

Informationen zu den ersten Schritten finden Sie unter:

Automatische horizontale Podskalierung

Verwenden Sie HPA, wenn Ihre Arbeitslast als mehrere identische Replikate ausgeführt werden kann und die Nachfrage schwankt. Er skaliert auf CPU/Arbeitsspeicher, Anwendungsmetriken (Anforderungen pro Sekunde, Latenz) oder externe Warteschlangen- und Backlogmetriken – und sollte mit der Cluster-Autoskalierung für die Knotenkapazität kombiniert werden.

Screenshot eines Diagramms, das zeigt, wie der Horizontal Pod Autoscaler mit AKS funktioniert.

Erfahren Sie mehr: Wann sollte ich die horizontale Pod-Autoskalierung (HPA) in Kubernetes verwenden?

Siehe auch: Verwenden des Vertical Pod Autoscaler in AKS, um die CPU- und Arbeitsspeicheranforderungen von Pods bedarfsgerecht anzupassen.

Vertikale Podautoskalierung

Vertical Pod Autoscaler analysiert die Pod-CPU- und Speicherauslastung und empfiehlt oder wendet entsprechende Ressourcenanforderungen an. Verwenden Sie VPA, um Workloads bedarfsgerecht zu dimensionieren, die sich nicht effizient durch Hinzufügen von Replikas skalieren lassen, oder um Scheduling und Ressourcenauslastung zu verbessern.

Je nach Aktualisierungsmodus kann VPA Empfehlungen anwenden, wenn Pods erstellt oder entfernt und Pods mit aktualisierten Ressourcenanforderungen neu erstellt werden. Überprüfen Sie die Anforderungen an die Arbeitsauslastungsverfügbarkeit, bevor VPA änderungen automatisch anwenden kann.

Erste Schritte finden Sie unter Verwenden des Vertical Pod Autoscaler in AKS.

Cluster Autoscaler

Der Cluster-Autoscaler passt die Anzahl der Knoten in einem Knotenpool anhand der Anforderungen des Pod-Schedulings an. Es fügt Knoten hinzu, wenn Pods aufgrund unzureichender Knotenkapazität nicht geplant werden können, und entfernt unterlastete Knoten, wenn ihre Workloads an anderer Stelle ausgeführt werden können.

Screenshot eines Diagramms, das zeigt, wie die Cluster-Autoscaler mit AKS funktioniert.

Cluster Autoscaler wird häufig mit HPA verwendet. HPA passt die Anzahl der Pod-Replikate anhand der Arbeitslast an, während der Cluster Autoscaler die Knotenkapazität anpasst, um diese Pods aufzunehmen.

Informationen zu den ersten Schritten finden Sie unter Verwenden der Cluster-Autoscaler in AKS.

Skalierungsereignisse

Wenn ein Knotenpool nicht über ausreichende Rechenressourcen für einen Pod verfügt, bleibt der Pod im Status „Pending“. Wenn die Cluster-Autoscaler Pods erkennt, die aufgrund von Ressourceneinschränkungen des Knotenpools nicht geplant werden können, erhöht sich die Anzahl der Knoten im Knotenpool. Kubernetes plant die ausstehenden Pods ein, nachdem die neuen Knoten bereitgestellt wurden und betriebsbereit sind.

Die Bereitstellung vmbasierter Knoten kann mehrere Minuten dauern. Bei Workloads mit plötzlicher Burst-Nachfrage sollten Sie virtuelle Knoten und Azure Container Instances verwenden.

Skalierungsereignisse

Cluster Autoscaler überwacht Knoten auf Unterauslastung und ermittelt, ob ihre Pods auf anderen Knoten ausgeführt werden können. Wenn ein Knoten nicht mehr erforderlich ist, plant Kubernetes seine Pods neu, und AKS entfernt den Knoten aus dem Knotenpool.

Skalierungsvorgänge können Workloads stören, wenn Pods zwischen Knoten wechseln. Führen Sie mehrere Pod-Replikate aus und konfigurieren Sie geeignete Verfügbarkeitsmechanismen, um Unterbrechungen zu minimieren.

Kubernetes Ereignisgesteuerte Automatische Skalierung

Kubernetes Event-driven Autoscaling (KEDA) ist eine Open-Source-Komponente, die Workloads basierend auf Ereignissen skaliert. KEDA erweitert Kubernetes mit benutzerdefinierten Ressourcen, einschließlich ScaledObject, die beschreiben, wie eine Workload auf eine Ereignisquelle oder Metrik reagieren soll.

KEDA ist nützlich für Arbeitslasten, die Warteschlangen, Datenströme, Nachrichten oder andere Ereignis-Backlogs verarbeiten. Es kann die unterstützten Workloads auf null herunterskalieren, wenn keine Ereignisse vorliegen, und die Anzahl der Replikate erhöhen, wenn der Rückstand wächst.

Informationen zu den ersten Schritten finden Sie in der KEDA-Add-On-Übersicht.

Automatische Bereitstellung von Knoten

Automatische Knotenbereitstellung (NAP) verwendet das Open-Source-Projekt Karpenter, um Knoten entsprechend den ausstehenden Pod-Anforderungen bereitzustellen und zu verwalten. NAP wählt eine geeignete SKU und Knotenmenge für virtuelle Computer aus, um die Anforderungen der Arbeitsauslastung in Echtzeit zu erfüllen.

NAP beginnt mit einer zulässigen Gruppe von VM-SKUs und wählt die Kapazität für ausstehende Workloads aus. Sie können Ressourcenbeschränkungen und Terminplanungseinstellungen definieren, um zu steuern, wie Sie Knoten bereitstellen und Workloads verteilen.

Skalierung und Schutzmechanismen der Steuerungsebene

Kubernetes verfügt über einen mehrdimensionalen Umschlag, in dem jeder Ressourcentyp unterschiedliche Anforderungen an die Steuerungsebene stellt. Beispielsweise können Überwachungen von Ressourcen wie Secrets List-Aufrufe an den Kubernetes-API-Server auslösen und die Control Plane stärker belasten als Ressourcen ohne Überwachungen.

Da die Steuerungsebene Ressourcenvorgänge im gesamten Cluster verwaltet, kann die Skalierung in einer Dimension die verfügbare Kapazität in anderen Dimensionen verringern. Beispielsweise kann der Betrieb von mehreren Hunderttausend Pods die von der Control Plane unterstützte Pod-Mutationsrate beeinträchtigen. Empfehlungen finden Sie unter Kubernetes-Client bewährte Methoden für große AKS-Cluster.

AKS skaliert die Steuerungsebenenkomponenten automatisch basierend auf Signalen, z. B. der Gesamtanzahl der Clusterkerne und der CPU oder des Arbeitsspeicherdrucks auf Steuerungsebenenkomponenten.

Um zu überprüfen, ob die Steuerungsebene skaliert wurde, überprüfen Sie die large-cluster-control-plane-scaling-status ConfigMap:

kubectl describe configmap large-cluster-control-plane-scaling-status -n kube-system

Schutzmechanismen der Steuerebene

Wenn die automatische Skalierung des API-Servers sie nicht unter hoher Last stabilisiert, kann AKS einen verwalteten API-Serverschutz bereitstellen. Dieser Notfallschutz drosselt Clientanfragen von Nicht-Systemclients, um zu verhindern, dass die Steuerungsebene nicht mehr reagiert. Systemkritische API-Serveraufrufe von Komponenten wie kubelet funktionieren weiterhin.

Um festzustellen, ob die Schutzfunktion des verwalteten API-Servers angewendet wurde, prüfen Sie, ob aks-managed-apiserver-guardFlowSchema und PriorityLevelConfiguration vorhanden sind:

kubectl get flowschemas
kubectl get prioritylevelconfigurations

Wenn diese Ressourcen vorhanden sind, lesen Sie den Leitfaden zur Problembehandlung für API-Server und etcd mit Hinweisen zur Problembehebung.

Burst zu Azure Container Instances (ACI)

Sie können AKS in Azure Container Instances integrieren, um schnelle Nachfragesteigerungen zu bewältigen. Die automatische Pod-Skalierung kann mehr Replikate erstellen, als der vorhandene Knotenpool unterstützen kann, während die Bereitstellung zusätzlicher VM-basierter Knoten mehrere Minuten dauern kann. ACI stellt Rechenkapazität bereit, ohne dass zusätzliche VM-Knoten erforderlich sind.

Screenshot eines Diagramms, das zeigt, wie Azure Container Instances mit AKS funktioniert.

Die Komponente für virtuelle AKS-Knoten basiert auf Virtual Kubelet und präsentiert ACI als virtuellen Kubernetes-Knoten. Kubernetes kann geeignete Pods so planen, dass sie über den virtuellen Knoten als ACI-Containerinstanzen statt direkt auf AKS-VM-Knoten ausgeführt werden.

Virtuelle Knoten verwenden ein anderes Subnetz im selben virtuellen Netzwerk wie der AKS-Cluster. Diese Konfiguration bietet private Netzwerkkonnektivität zwischen AKS und ACI, während ACI als logische Erweiterung des Clusters fungiert.

Nächste Schritte

Verwenden Sie die folgenden Ressourcen, um die Skalierungsmethode zu implementieren, die Ihrer Workload entspricht:

Weitere Informationen zu den kernen Kubernetes- und AKS-Konzepten finden Sie unter: