Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
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.
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.
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:
- Manuelles Skalieren von Pods oder Knoten
- Wann sollte ich den Horizontal Pod Autoscaler (HPA) in Kubernetes verwenden?
- Vertical Pod Autoscaler in AKS verwenden
- Cluster Autoscaler in AKS verwenden
- Verwenden des KEDA-Add-Ons
- Automatische Knotenbereitstellung verwenden
- Erstellen virtueller Knoten mit Azure Container Instances
Weitere Informationen zu den kernen Kubernetes- und AKS-Konzepten finden Sie unter: