Auf dieser Seite wird das nutzungsbasierte 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 wird die Anwendungsverfügbarkeit erhöht und das Routing flexibler.
Diese Seite richtet sich an Cloud-Architekten und Netzwerkspezialisten, die Dienste in GKE verwalten und die Traffic-Verteilung basierend auf der Echtzeit-Ressourcennutzung optimieren möchten.
Machen Sie sich vor dem Lesen dieser Seite mit den folgenden Themen vertraut:
- GKE-Konzepte: Dazu gehören GKE-Cluster, Knoten und Pods.
- Kubernetes-Dienste: So werden Anwendungen in Kubernetes verfügbar gemacht.
- Cloud Load Balancing: Sie sollten sich mit Cloud Load Balancing auskennen, insbesondere mit 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.
- Messwerte zur grundlegenden Ressourcennutzung: z. B. die CPU-Auslastung, die derzeit für das auslastungsbasierte Load-Balancing verwendet wird.
Übersicht
Die Cloud Load Balancing-Infrastruktur leitet Traffic anhand von Standardmesswerten für die Erreichbarkeit an GKE-Dienste weiter, darunter HTTP, HTTPS, HTTP/2 und gRPC. Diese Messwerte bestimmen den Zustand und die Eignung von Pods. Standardmäßig wird der Traffic an alle fehlerfreien Backend-Pods weitergeleitet, wobei die Pod-Verfügbarkeit und optional definierte Richtlinien zur Trafficverteilung wie GCPTrafficDistributionPolicy
berücksichtigt werden.
Moderne Anwendungen erfassen die CPU-Auslastung, damit Sie Kosten nachvollziehen, die Leistung überwachen und die Kapazität effektiv verwalten können. Um diesem Bedarf gerecht zu werden, verwenden Load Balancer Echtzeitdaten zur Ressourcenauslastung als Messwert. So können sie das optimale Traffic-Volumen ermitteln, 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 verwendet, um die Fähigkeit von Backend-Pods zu bestimmen, Anwendungs-Traffic zu verarbeiten. Anschließend wird der Traffic auf andere Back-Ends verteilt, wenn ein oder mehrere Pods überlastet sind.
Features und Vorteile
Das nutzungsbasierte Load-Balancing bietet folgende Vorteile:
Erhöht die Anwendungsverfügbarkeit: Der Traffic zu Pods mit geringerer Ressourcennutzung wird priorisiert, wenn die Back-Ends ausgelastet sind. So wird die Anwendungsleistung aufrechterhalten, Verlangsamungen und Ausfälle werden verhindert und die Nutzerfreundlichkeit wird verbessert.
Flexible Weiterleitung: Bietet eine zusätzliche Gruppe von Messwerten, mit denen Sie Richtlinien für die Traffic-Verteilung definieren können, die genau auf Ihre geschäftlichen Anwendungsfälle abgestimmt sind.
Funktionsweise des nutzungsbasierten Load-Balancing
Das nutzungsbasierte 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. Es erhält Traffic auf zwei Arten:
Von außerhalb des Clusters (North-South-Traffic): Ihr Cluster empfängt Traffic aus dem Internet oder anderen externen Quellen. Dieser Traffic wird als North-South-Traffic bezeichnet. Ein von GKE verwalteter Load Balancer (Gateway) leitet diesen Traffic von außerhalb Ihres Clusters weiter.
Innerhalb Ihres 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 Traffic-Fluss wird als Ost-West-Traffic bezeichnet.
Die auslastungsbasierte Lastverteilung für GKE-Dienste ist ein kontinuierlicher Prozess, bei dem GKE-Agents Messwerte zur Pod-Auslastung erfassen, die es der Cloud Load Balancing-Infrastruktur ermöglichen, den Traffic intelligent zu verteilen. In den folgenden Schritten wird zusammengefasst, wie das nutzungsbasierte Load-Balancing für GKE-Dienste den Anwendungs-Traffic auf Grundlage 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 einfachen 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 die
gpu_cache_usage_perc metric
einer vLLM-Arbeitslast verwenden, damit der Load-Balancer den Traffic an die Region mit mehr verfügbaren Ressourcen weiterleitet. 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 die kombinierte Auslastung.
Die Cloud Load Balancing-Infrastruktur analysiert Echtzeit-Nutzungsdaten, um die Trafficverteilung dynamisch anzupassen. Er bestimmt, wie viel Traffic an jede Gruppe von Pods (jede zonale NEG) gesendet werden soll, indem er die durchschnittliche Ressourcennutzung (z. B. 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 der Region gewährleistet, die dem Nutzer am nächsten ist.
Das folgende Beispiel zeigt, wie das nutzungsbasierte Load-Balancing funktioniert.
Beispiel: Umgang mit überlasteten Pods
Wenn Ihr Service mehrere Container im selben Pod ausführt, meldet der GKE-Messwerte-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-Auslastungsstatistiken aus GKE verwendet, um die Traffic-Verteilung auf Pods zu optimieren, die in mehreren Zonen bereitgestellt werden. Die Clientanfrage wird über das GKE-Gateway an Back-End-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 erhält weiterhin Traffic.
In Zone 3 meldet der Pod eine niedrige CPU-Auslastung von 40% und erhält möglicherweise mehr Traffic. GKE sendet kontinuierlich Metadaten und Nutzungsmesswerte an die Cloud Load Balancing-Infrastruktur, die das Traffic-Routing 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, passiert 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, wird reduziert. Diese Neuausrichtung wird fortgesetzt, bis die durchschnittliche CPU-Auslastung für Pods in dieser Zone wieder unter den Auslastungsgrenzwert von 80 % fällt.
- Da die 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 nach und nach auf alle Pods verteilt, die den Dienst unterstützen, und weiterhin effizient auf Grundlage der Auslastung verteilt.