Auf dieser Seite wird das auslastungsbasierte Load Balancing für Google Kubernetes Engine-Dienste (GKE) vorgestellt. Dabei wird die Ressourcenauslastung Ihrer Backend-Pods bewertet und die tatsächliche Arbeitslastkapazität verwendet, um den Traffic intelligent neu zu verteilen. So wird die Anwendungsverfügbarkeit erhöht und das Routing flexibler gestaltet.
Diese Seite richtet sich an Cloud-Architekten und Netzwerkspezialisten, die Dienste in der GKE verwalten und die Trafficverteilung basierend auf der Echtzeit-Ressourcenauslastung optimieren möchten.
Machen Sie sich vor dem Lesen dieser Seite mit den folgenden Konzepten vertraut:
- GKE-Konzepte: einschließlich GKE-Cluster, -Knoten und -Pods.
- Kubernetes-Dienste: wie Anwendungen in Kubernetes verfügbar gemacht werden.
- Cloud Load Balancing: Ein allgemeines Verständnis von Cloud Load Balancing, insbesondere der Funktionsweise vonGoogle Cloud Load Balancern.
- Kubernetes Gateway API: Die empfohlene Methode zum Bereitstellen von Diensten und Verwalten von Traffic in GKE.
- Netzwerk-Endpunktgruppen (NEGs): wie GKE-Dienste NEGs verwenden, um sich in Cloud Load Balancing zu integrieren.
- Grundlegende Messwerte zur Ressourcenauslastung: z. B. die CPU-Auslastung, die der aktuelle Messwert für das auslastungsbasierte Load Balancing ist.
Übersicht
Die Cloud Load Balancing-Infrastruktur leitet Traffic an GKE-Dienste weiter. Dies geschieht anhand von Standardmesswerten für die Erreichbarkeit, einschließlich HTTP, HTTPS, HTTP/2 und gRPC, die den Zustand und die Eignung von Pods bestimmen. Standardmäßig wird Traffic an alle fehlerfreien Backend-Pods weitergeleitet. Dabei werden die Pod-Verfügbarkeit und optional definierte Richtlinien für die Trafficverteilung wie GCPTrafficDistributionPolicy berücksichtigt.
Moderne Anwendungen erfassen die CPU-Nutzung, damit Sie die Kosten nachvollziehen, die Leistung überwachen und die Kapazität effektiv verwalten können. Um diese Anforderung zu erfüllen, verwenden Load Balancer Echtzeitdaten zur Ressourcenauslastung als Messwert. So können sie das optimale Traffic-Volumen bestimmen, das jeder Backend-Pod für eine intelligente Traffic-Verteilung verarbeiten kann.
Beim auslastungsbasierten Load Balancing für GKE-Dienste wird die Ressourcenauslastung als Messwert herangezogen, um die Fähigkeit von Backend-Pods zu bestimmen, Anwendungstraffic zu verarbeiten. Anschließend wird der Traffic auf andere Back-Ends verteilt, wenn ein oder mehrere Pods überlastet sind.
Funktionen und Vorteile
Das auslastungsbasierte Load Balancing bietet folgende Vorteile:
Erhöht die Anwendungsverfügbarkeit: Priorisiert den Traffic zu Pods mit geringerer Ressourcenauslastung, wenn Backends unter Druck stehen. Dies trägt dazu bei, die Anwendungsleistung aufrechtzuerhalten, Verlangsamungen und Ausfälle zu verhindern und eine zuverlässige Nutzung für Nutzer zu gewährleisten.
Bietet flexibles Routing: Es werden zusätzliche Messwerte bereitgestellt, mit denen Sie Richtlinien für die Trafficverteilung definieren können, die genau auf Ihre geschäftlichen Anwendungsfälle abgestimmt sind.
Funktionsweise des auslastungsbasierten Load Balancing
Das auslastungsbasierte Load Balancing für GKE-Dienste verbessert die Verwaltung des Traffics für Ihre Anwendungen, die in GKE ausgeführt werden, da der Prozess besser auf die Ressourcenlast reagiert. Ihre Anwendung wird in GKE mit vielen Instanzen (Pods) auf verschiedenen Maschinen ausgeführt. Der Traffic wird auf zwei Arten empfangen:
Von außerhalb Ihres Clusters (Nord-Süd-Traffic): Ihr Cluster empfängt Traffic aus dem Internet oder anderen externen Quellen, der als Nord-Süd-Traffic bezeichnet wird. Ein von GKE verwalteter Load Balancer (Gateway) leitet diesen Traffic von außerhalb Ihres Clusters weiter.
Aus dem Cluster (Ost-West-Traffic): Ihr Cluster empfängt Traffic zwischen verschiedenen Teilen Ihrer Anwendung, von anderen Diensten innerhalb Ihres GKE-Cluster oder über mehrere Cluster hinweg. Dieser interne Trafficfluss wird als Ost-West-Traffic bezeichnet.
Das auslastungsbasierte Load Balancing für GKE-Dienste ist ein kontinuierlicher Prozess, bei dem GKE-Agents Pod-Auslastungsmesswerte erfassen, mit denen die Cloud Load Balancing-Infrastruktur den Traffic intelligent verteilen kann. In den folgenden Schritten wird zusammengefasst, wie das auslastungsbasierte Load Balancing für GKE-Dienste Ihren Anwendungstraffic basierend auf der Echtzeit-Ressourcennutzung verwaltet:
Wenn Sie Ihren GKE-Dienst mit einem Application Load Balancer (Gateway) einrichten, erstellt GKE automatisch NEGs für jede Zone und weist die Pods Ihrer Anwendung diesen NEGs zu. Anfangs basiert die Trafficverteilung auf grundlegenden Systemdiagnosen und Ihren Standardeinstellungen.
Sie konfigurieren Ihren GKE-Dienst so, dass die Ressourcenauslastung, z. B. die CPU, als wichtiger Messwert für das Load Balancing verwendet wird.
Zusätzlich zum Standardmesswert für die CPU-Auslastung können Sie benutzerdefinierte Messwerte aus Ihrer Anwendung für den Load Balancer verfügbar machen. Mithilfe von Messwerten aus Ihrer Anwendung können Sie eigene Signale definieren, die für Ihre Arbeitslast spezifisch sind. Sie können beispielsweise die
gpu_cache_usage_perc metricaus einer vLLM-Arbeitslast verwenden, um dem Load Balancer zu helfen, Traffic an die Region mit mehr verfügbaren Ressourcen weiterzuleiten. Informationen zum Bereitstellen benutzerdefinierter Messwerte für Ihren Load Balancer finden Sie unter Benutzerdefinierte Messwerte für Load Balancer bereitstellen.Ein spezieller GKE-Agent überwacht kontinuierlich die Ressourcennutzung Ihrer Pods (z. B. CPU) und sendet diese Daten regelmäßig an die Cloud Load Balancing-Infrastruktur. Wenn ein Pod mehrere Container hat, berechnet der Agent deren kombinierte Auslastung.
Die Cloud Load Balancing-Infrastruktur analysiert Echtzeit-Auslastungsdaten, um die Trafficverteilung dynamisch anzupassen. Er bestimmt, wie viel Traffic an jede Pod-Gruppe (jede zonale NEG) gesendet werden soll, indem er die durchschnittliche Ressourcenauslastung (z. B. CPU-Last) und andere Faktoren wie die Netzwerklatenz auswertet. Bei diesem Prozess wird der Traffic automatisch von Pods mit höherer Last auf Pods mit geringerer Last verlagert, um eine effiziente Ressourcennutzung in der nächstgelegenen Region zu gewährleisten.
Das folgende Beispiel zeigt, wie das auslastungsbasierte Load Balancing funktioniert.
Beispiel: Umgang mit überlasteten Pods
Wenn Ihr Dienst mehrere Container im selben Pod ausführt, meldet der GKE-Messwert-Agent die Ressourcennutzung jedes Containers separat. Die Cloud Load Balancing-Infrastruktur berechnet dann einen gewichteten Durchschnitt der Auslastung, um die Gesamtkapazität des Pods zu ermitteln.
Abbildung 1 zeigt, wie Cloud Load Balancing Echtzeit-CPU-Auslastungsmesswerte von GKE verwendet, um die Trafficverteilung auf Pods zu optimieren, die in mehreren Zonen bereitgestellt sind. Die Clientanfrage wird über das GKE-Gateway an Back-End-Pods weitergeleitet, die in NEGs über drei Zonen hinweg gruppiert sind.
In Zone 1 meldet der Pod eine CPU-Auslastung von 90 %. Der Load Balancer reduziert den Traffic zu diesem Pod, um eine Überlastung zu vermeiden.
In Zone 2 ist der Pod mit 60 % CPU-Auslastung mäßig ausgelastet und empfängt weiterhin Traffic.
In Zone 3 meldet der Pod eine niedrige CPU-Auslastung von 40 % und kann mehr Traffic empfangen. Die GKE sendet kontinuierlich Metadaten und Auslastungsmesswerte an die Cloud Load Balancing-Infrastruktur, die das Traffic-Routing intelligent anpasst, um die Anwendungsleistung und -verfügbarkeit aufrechtzuerhalten.
Angenommen, Ihr Dienst ist für eine maximale CPU-Auslastung von 80 % konfiguriert. Wenn Pods in Zone 1 eine CPU-Auslastung von 90 % melden, die den Schwellenwert überschreitet, geschieht Folgendes:
- Die Cloud Load Balancing-Infrastruktur erkennt diese Überlastung.
- Anschließend wird der Traffic intelligent neu verteilt und die Menge an Traffic, die an Pods in Zone 1 gesendet wird, reduziert. Diese Neuverteilung wird fortgesetzt, bis die durchschnittliche CPU-Auslastung für Pods in dieser Zone wieder unter den Schwellenwert von 80 % fällt.
- Da Pods in Zone 1 eine geringere CPU-Auslastung (unter dem Schwellenwert von 80 %) melden, wird die Trafficverteilung von der Cloud Load Balancing-Infrastruktur neu bewertet. Anschließend wird der Traffic schrittweise auf alle Pods verteilt, die den Dienst unterstützen, und der Traffic wird weiterhin effizient auf Grundlage der Auslastung verteilt.