Auf dieser Seite wird das auslastungsbasierte Load-Balancing für Google Kubernetes Engine-Dienste (GKE) vorgestellt. Dabei wird die Ressourcennutzung Ihrer Backend-Pods ausgewertet und die tatsächliche Arbeitslastkapazität verwendet, um den Traffic intelligent neu zu verteilen. So werden die Anwendungsverfügbarkeit erhöht und das Routing flexibler gestaltet.
Diese Seite richtet sich an Cloud-Architekten und Netzwerkspezialisten, die Dienste in GKE verwalten und die Trafficverteilung basierend auf der Echtzeit-Ressourcennutzung optimieren möchten.
Bevor Sie diese Seite lesen, sollten Sie mit den folgenden Themen vertraut sein:
- GKE-Konzepte: einschließlich GKE-Cluster, Knoten und Pods.
- Kubernetes Dienste: wie Anwendungen in Kubernetes verfügbar gemacht werden.
- Cloud Load Balancing: allgemeines Verständnis von Cloud Load Balancing, insbesondere der Funktionsweise von Load-Balancern.Cloud de Confiance
- Kubernetes Gateway API: die empfohlene Methode zum Verfügbarmachen von Diensten und Verwalten von Traffic in GKE.
- Netzwerk-Endpunktgruppen (NEGs): wie GKE-Dienste NEGs verwenden, um in Cloud Load Balancing eingebunden zu werden.
- Grundlegende Messwerte zur Ressourcennutzung, z. B. die CPU-Auslastung, die derzeit für das auslastungsbasierte Load-Balancing verwendet wird.
Übersicht
Die Cloud Load Balancing-Infrastruktur leitet Traffic an GKE-Dienste weiter. Dabei werden Standardmesswerte zur Erreichbarkeit verwendet, darunter HTTP, HTTPS, HTTP/2 und gRPC, die den Zustand und die Eignung von Pods bestimmen. Standardmäßig wird der Traffic an alle fehlerfreien Backend-Pods weitergeleitet. Dabei werden die Pod-Verfügbarkeit und optional definierte Richtlinien zur Verteilung des Traffics wie GCPTrafficDistributionPolicy berücksichtigt.
Moderne Anwendungen verfolgen die CPU-Auslastung, damit Sie Kosten nachvollziehen, die Leistung beobachten und die Kapazität effektiv verwalten können. Um diesem Bedarf gerecht zu werden, verwenden Load-Balancer Daten zur Echtzeit-Ressourcennutzung als Messwert. So können sie das optimale Trafficvolumen bestimmen, das jeder Backend-Pod verarbeiten kann, um den Traffic intelligent zu verteilen.
Beim auslastungsbasierten Load-Balancing für GKE-Dienste wird die Ressourcennutzung als Messwert verwendet, um die Fähigkeit von Backend-Pods zu bestimmen, Anwendungstraffic zu verarbeiten. Wenn ein oder mehrere Pods überlastet sind, wird der Traffic an andere Backends umgeleitet.
Features und Vorteile
Das auslastungsbasierte Load-Balancing bietet die folgenden Vorteile:
Erhöht die Anwendungsverfügbarkeit: Priorisiert Traffic zu Pods mit geringerer Ressourcennutzung, wenn Backends unter Druck stehen. So wird die Anwendungsleistung aufrechterhalten, Verlangsamungen und Ausfälle werden verhindert und eine zuverlässige Nutzererfahrung wird gewährleistet.
Bietet flexibles Routing: Bietet eine zusätzliche Reihe von Messwerten, mit denen Sie Richtlinien zur Verteilung des Traffics definieren können, die genau auf Ihre geschäftlichen Anwendungsfälle abgestimmt sind.
Funktionsweise des auslastungsbasierten Load-Balancings
Das auslastungsbasierte Load-Balancing für GKE-Dienste verbessert die Verwaltung des Traffics für Ihre Anwendungen, die in GKE ausgeführt werden, indem der Prozess reaktionsfähiger auf die Ressourcenlast reagiert. Ihre Anwendung wird in GKE mit vielen Instanzen (Pods) auf verschiedenen Maschinen ausgeführt. Traffic wird auf zwei Arten empfangen:
Von außerhalb des Clusters (Nord-Süd-Traffic): Ihr Cluster empfängt Traffic aus dem Internet oder anderen externen Quellen. Dies wird als Nord-Süd-Traffic bezeichnet. Ein von GKE verwalteter Load-Balancer (Gateway) leitet diesen Traffic von außerhalb Ihres Clusters weiter.
Von innerhalb des Clusters (Ost-West-Traffic): Ihr Cluster empfängt Traffic zwischen verschiedenen Teilen Ihrer Anwendung, von anderen Diensten in Ihrem 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 Messwerte zur Pod-Auslastung 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 diesen NEGs die Pods Ihrer Anwendung zu. Anfangs basiert die Verteilung des Traffics auf grundlegenden Systemdiagnosen und Ihren Standardeinstellungen.
Sie konfigurieren Ihren GKE-Dienst so, dass die Ressourcennutzung, 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. Mit Messwerten aus Ihrer Anwendung können Sie eigene Signale definieren, die speziell auf Ihre Arbeitslast zugeschnitten sind. Sie können beispielsweise den
gpu_cache_usage_perc metricaus einer vLLM-Arbeitslast verwenden, damit der Load Balancer Traffic an die Region mit mehr verfügbaren Ressourcen weiterleitet. Informationen zum Verfügbarmachen benutzerdefinierter Messwerte für Ihren Load-Balancer finden Sie unter Benutzerdefinierte Messwerte für Load-Balancer verfügbar machen.Ein spezieller GKE-Agent überwacht kontinuierlich die Ressourcennutzung Ihrer Pods (z. B. die CPU) und sendet diese Daten regelmäßig an die Cloud Load Balancing-Infrastruktur. Wenn ein Pod mehrere Container enthält, berechnet der Agent die kombinierte Nutzung.
Die Cloud Load Balancing-Infrastruktur analysiert Echtzeit-Auslastungsdaten, um die Trafficverteilung dynamisch anzupassen. Sie bestimmt, wie viel Traffic an jede Pod-Gruppe (jede zonale NEG) gesendet werden soll, indem sie die durchschnittliche Ressourcennutzung (z. B. die CPU-Last) und andere Faktoren wie die Netzwerklatenz auswertet. Bei diesem Prozess wird der Traffic automatisch von Pods mit höherer Last zu Pods mit geringerer Last verschoben. So wird eine effiziente Ressourcennutzung in Ihrer nächstgelegenen Region gewährleistet.
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 Nutzung, um die Gesamtkapazität des Pods zu ermitteln.
Abbildung 1 zeigt, wie Cloud Load Balancing Echtzeit-Messwerte zur CPU-Auslastung aus GKE verwendet, um die Verteilung des Traffics auf Pods zu optimieren, die in mehreren Zonen bereitgestellt werden. Die Clientanfrage wird über das GKE-Gateway an Backend-Pods weitergeleitet, die in NEGs in drei Zonen 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 verhindern.
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 geringe CPU-Auslastung von 40% und empfängt möglicherweise mehr Traffic. GKE sendet kontinuierlich Metadaten und Messwerte zur Auslastung an die Cloud Load Balancing-Infrastruktur, die das Trafficrouting intelligent anpasst, um die Anwendungsleistung und -verfügbarkeit aufrechtzuerhalten.
Stellen Sie sich ein Szenario vor, in dem Ihr Dienst für eine maximale CPU-Auslastung von 80 % konfiguriert ist. Wenn Pods in Zone 1 eine CPU-Auslastung von 90% melden, die den Grenzwert überschreitet, geschieht Folgendes:
- Die Cloud Load Balancing-Infrastruktur erkennt diese Überlastung.
- Anschließend wird der Traffic intelligent neu verteilt und die Menge des Traffics reduziert, der an Pods in Zone 1 gesendet wird. Diese Neuverteilung wird fortgesetzt, bis die durchschnittliche CPU-Auslastung für Pods in dieser Zone wieder unter den Grenzwert von 80 % fällt.
- Wenn Pods in Zone 1 eine geringere CPU-Auslastung melden (unter dem Grenzwert von 80 %), bewertet die Cloud Load Balancing-Infrastruktur die Verteilung des Traffics neu. Anschließend wird der Traffic schrittweise auf alle Pods verteilt, die den Dienst unterstützen, und der Traffic wird weiterhin effizient basierend auf der Auslastung verteilt.