Skalierung der Arbeitslast - AWS Präskriptive Leitlinien

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Skalierung der Arbeitslast

Die Skalierung der Arbeitslast in Kubernetes ist für die Aufrechterhaltung der Anwendungsleistung und Ressourceneffizienz in dynamischen Umgebungen unerlässlich. Durch Skalierung wird sichergestellt, dass Anwendungen unterschiedliche Workloads ohne Leistungseinbußen bewältigen können. Kubernetes bietet die Möglichkeit, Ressourcen auf der Grundlage von Echtzeitmetriken automatisch nach oben oder unten zu skalieren, sodass Unternehmen schnell auf Änderungen im Datenverkehr reagieren können. Diese Elastizität verbessert nicht nur die Benutzererfahrung, sondern optimiert auch die Ressourcennutzung und trägt so dazu bei, die Kosten zu minimieren, die mit zu wenig genutzten oder übermäßig bereitgestellten Ressourcen verbunden sind.

Darüber hinaus unterstützt eine effektive Skalierung der Arbeitslast eine hohe Verfügbarkeit und stellt sicher, dass Anwendungen auch in Zeiten mit hoher Nachfrage reaktionsschnell bleiben. Die Workload-Skalierung in Kubernetes ermöglicht es Unternehmen, Cloud-Ressourcen besser zu nutzen, indem sie die Kapazität dynamisch an aktuelle Bedürfnisse anpassen.

In diesem Abschnitt werden die folgenden Arten der Workload-Skalierung beschrieben:

Horizontal Pod Autoscaler

Der Horizontal Pod Autoscaler (HPA) ist eine Kubernetes-Funktion, die die Anzahl der Pod-Replikate in einer Bereitstellung, einem Replikationscontroller oder einem Stateful-Set automatisch auf der Grundlage der beobachteten CPU-Auslastung oder anderer ausgewählter Metriken anpasst. Der HPA stellt sicher, dass Anwendungen schwankende Datenverkehrs- und Arbeitslasten bewältigen können, ohne dass manuelles Eingreifen erforderlich ist. Die HPA bietet die Möglichkeit, eine optimale Leistung aufrechtzuerhalten und gleichzeitig die verfügbaren Ressourcen effektiv zu nutzen.

In Kontexten, in denen die Nutzernachfrage im Laufe der Zeit stark schwanken kann, wie z. B. bei Web-Apps, Microservices usw. APIs, ist HPA besonders hilfreich.

Der Horizontal Pod Autoscaler bietet die folgenden Hauptfunktionen:

  • Automatische Skalierung — HPA erhöht oder verringert automatisch die Anzahl der Pod-Replikate als Reaktion auf Echtzeitmetriken und stellt so sicher, dass Anwendungen skaliert werden können, um den Benutzeranforderungen gerecht zu werden.

  • Metrikbasierte Entscheidungen — Standardmäßig skaliert HPA auf der Grundlage der CPU-Auslastung. Es können jedoch auch benutzerdefinierte Messwerte wie die Speichernutzung oder anwendungsspezifische Metriken verwendet werden, was maßgeschneiderte Skalierungsstrategien ermöglicht.

  • Konfigurierbare Parameter — Sie können die minimale und maximale Anzahl von Replikaten sowie die gewünschten Nutzungsprozentsätze wählen, sodass Sie selbst bestimmen können, wie stark die Skalierung sein soll.

  • Integration mit Kubernetes — Um Ressourcen zu überwachen und zu ändern, arbeitet HPA mit anderen Elementen des Kubernetes-Ökosystems zusammen, darunter dem Metrics Server, der Kubernetes-API und benutzerdefinierten Metrikadaptern.

  • Bessere Ressourcennutzung — HPA hilft dabei, sicherzustellen, dass Ressourcen effektiv genutzt werden, wodurch Kosten gesenkt und die Leistung verbessert werden, indem die Anzahl der Pods dynamisch geändert wird.

Proportionaler Cluster-Autoscaler

Der Cluster Proportional Autoscaler (CPA) ist eine Kubernetes-Komponente, mit der die Anzahl der Pod-Replikate in einem Cluster automatisch an die Anzahl der verfügbaren Knoten angepasst wird. Im Gegensatz zu herkömmlichen Autoscalern, die auf der Grundlage von Kennzahlen zur Ressourcennutzung (wie CPU und Arbeitsspeicher) skalieren, skaliert CPA Workloads proportional zur Größe des Clusters selbst.

Dieser Ansatz ist besonders nützlich für Anwendungen, die ein gewisses Maß an Redundanz oder Verfügbarkeit im Verhältnis zur Clustergröße aufrechterhalten müssen, wie CoreDNS und andere Infrastrukturdienste. Zu den wichtigsten Anwendungsfällen für CPA gehören die folgenden:

  • Übermäßige Bereitstellung

  • Skalieren Sie die wichtigsten Plattformdienste

  • Skalieren Sie Workloads, da CPA keinen Metrikserver oder Prometheus-Adapter benötigt

Durch die Automatisierung des Skalierungsprozesses unterstützt CPA Unternehmen dabei, eine ausgewogene Verteilung der Arbeitslast aufrechtzuerhalten, die Ressourceneffizienz zu steigern und sicherzustellen, dass Anwendungen entsprechend bereitgestellt werden, um die Benutzeranforderungen zu erfüllen.

Der Cluster Proportional Autoscaler bietet die folgenden Hauptfunktionen:

  • Knotenbasierte Skalierung — CPA skaliert Replikate entsprechend der Anzahl der Clusterknoten, die geplant werden können, sodass Anwendungen proportional zur Größe des Clusters erweitert oder verkleinert werden können.

  • Proportionale Anpassung — Um sicherzustellen, dass die Anwendung entsprechend den Änderungen der Clustergröße skaliert werden kann, stellt der Autoscaler ein proportionales Verhältnis zwischen der Anzahl der Knoten und der Anzahl der Replikate her. Diese Beziehung wird verwendet, um die gewünschte Anzahl von Replikaten für eine Arbeitslast zu berechnen.

  • Integration mit Kubernetes-Komponenten — CPA funktioniert mit Standard-Kubernetes-Komponenten wie dem Horizontal Pod Autoscaler (HPA), konzentriert sich jedoch speziell auf die Anzahl der Knoten und nicht auf die Kennzahlen zur Ressourcennutzung. Diese Integration ermöglicht eine umfassendere Skalierungsstrategie.

  • Golang-API-Clients — Um die Anzahl der Knoten und ihre verfügbaren Kerne zu überwachen, verwendet CPA Golang-API-Clients, die innerhalb von Pods ausgeführt werden und mit dem Kubernetes-API-Server kommunizieren.

  • Konfigurierbare Parameter — Mithilfe von können Benutzer Schwellenwerte und Skalierungsparameter festlegenConfigMap, anhand derer CPA sein Verhalten ändert, und sicherstellen, dass der beabsichtigte Skalierungsplan eingehalten wird.

Kubernetes-basierter ereignisgesteuerter Autoscaler

Der auf Kubernetes basierende Event Driven Autoscaler (KEDA) ist ein Open-Source-Projekt, mit dem Kubernetes-Workloads auf der Grundlage der Anzahl der zu verarbeitenden Ereignisse skaliert werden können. KEDA verbessert die Skalierbarkeit von Anwendungen, indem es ihnen ermöglicht, dynamisch auf unterschiedliche Workloads zu reagieren, insbesondere auf solche, die ereignisgesteuert sind.

Durch die Automatisierung des Skalierungsprozesses auf der Grundlage von Ereignissen unterstützt KEDA Unternehmen dabei, die Ressourcennutzung zu optimieren, die Anwendungsleistung zu verbessern und die Kosten im Zusammenhang mit übermäßiger Bereitstellung zu senken. Dieser Ansatz ist besonders nützlich für Anwendungen mit unterschiedlichen Datenverkehrsmustern, wie z. B. Microservices, serverlose Funktionen und Echtzeit-Datenverarbeitungssysteme.

KEDA bietet die folgenden Hauptfunktionen:

  • Ereignisgesteuerte Skalierung — Mit KEDA können Sie Skalierungsregeln auf der Grundlage externer Ereignisquellen wie Nachrichtenwarteschlangen, HTTP-Anfragen oder benutzerdefinierten Metriken definieren. Diese Funktion trägt dazu bei, dass Anwendungen entsprechend der Nachfrage in Echtzeit skaliert werden.

  • Leichte Komponente — KEDA ist eine einfache Komponente mit einem einzigen Zweck, für deren einfache Integration in bestehende Kubernetes-Cluster weder viel Einrichtung noch Mehraufwand erforderlich ist.

  • Integration mit Kubernetes — KEDA erweitert die Funktionen von Kubernetes-nativen Komponenten wie dem Horizontal Pod Autoscaler (HPA). KEDA erweitert diese Komponenten um ereignisgesteuerte Skalierungsfunktionen und verbessert sie, anstatt sie zu ersetzen.

  • Support für mehrere Ereignisquellen — KEDA ist mit einer Vielzahl von Ereignisquellen kompatibel, darunter beliebte Messaging-Plattformen wie RabbitMQ, Apache Kafka und andere. Aufgrund dieser Anpassungsfähigkeit können Sie die Skalierung an Ihre einzigartige ereignisgesteuerte Architektur anpassen.

  • Benutzerdefinierte Skalierer — Mithilfe von benutzerdefinierten Skalierern können Sie spezifische Metriken festlegen, anhand derer KEDA Skalierungsaktionen als Reaktion auf bestimmte Geschäftslogik oder Anforderungen einleiten kann.

  • Deklarative Konfiguration — Gemäß den Kubernetes-Prinzipien können Sie KEDA verwenden, um das Skalierungsverhalten deklarativ zu beschreiben, indem Sie benutzerdefinierte Kubernetes-Ressourcen verwenden, um zu definieren, wie die Skalierung erfolgen soll.