Load-Balancing in GKE

Auf dieser Seite erhalten Sie eine allgemeine Übersicht über die Erstellung und Verwaltung von Cloud Load Balancing in der Google Kubernetes Engine (GKE). Für diese Seite wird vorausgesetzt, dass Sie mit Folgendem vertraut sind:

  • Load-Balancer-Typen Cloud de Confiance by S3NS
  • Der Unterschied zwischen Layer-4- (Network Load Balancer) und Layer-7-Load-Balancern (Application Load Balancer)

Diese Seite richtet sich an Cloud-Architekten und Netzwerkspezialisten, die das Netzwerk für ihre Organisation entwerfen und erstellen. Weitere Informationen zu gängigen Rollen und Beispielaufgaben, auf die wir in Cloud de Confiance Inhalten verweisen, finden Sie unter Häufig verwendete GKE Enterprise-Nutzerrollen und -Aufgaben.

So erstellt GKE Load Balancer

Damit Ihre Anwendungen entweder von außerhalb des Clusters (externe Nutzer) oder innerhalb Ihres privaten Netzwerks (interne Nutzer) zugänglich sind, können Sie sie bereitstellen, indem Sie Load Balancer mit den APIs Gateway, Ingress und Service bereitstellen. Alternativ können Sie die Load Balancer-Komponenten selbst erstellen, während GKE die Netzwerk-Endpunktgruppen (NEGs) verwaltet, die Ihren Load Balancer mit den Pods in Ihrem Cluster verbinden.

Gateway

Der GKE-Gateway-Controller ist die Implementierung der Kubernetes Gateway API für Cloud Load Balancing von Google. Die Gateway API ist ein Open-Source-Projekt, mit dem standardisiert werden soll, wie Service-Meshes und Ingress-Controller Anwendungen in Kubernetes bereitstellen. Die Gateway API soll ein ausdrucksstärkerer, flexiblerer und erweiterbarer Nachfolger der Ingress-Ressource sein.

Der GKE-Gateway-Controller wird verwendet, um Layer-7-Application Load Balancer zu konfigurieren, um HTTP(S)-Traffic für Anwendungen bereitzustellen, die im Cluster ausgeführt werden.

Best Practice:

Verwenden Sie die Gateway API, um Ihren Load Balancer zu implementieren.

Eingehender Traffic

Der GKE-Ingress-Controller ist die Implementierung der Ingress API von Google. Mit der Ingress API können Sie den externen Zugriff auf Dienste verwalten, die in einem Cluster ausgeführt werden. Wenn Sie eine Ingress-Ressource in GKE erstellen, konfiguriert der Controller automatisch einen Layer-7-Application Load Balancer, über den HTTP- oder HTTP(S)-Traffic Ihre Anwendungen erreichen kann, die im Cluster ausgeführt werden.

GKE Gateway ist die empfohlene Wahl für neue Bereitstellungen und Anwendungen, die eine erweiterte Traffic-Verwaltung, Unterstützung für mehrere Protokolle oder eine bessere Mandantenfähigkeit erfordern. GKE Ingress ist jedoch eine praktikable Option für einfachere HTTP/HTTPS-Routing-Szenarien, insbesondere für vorhandene Konfigurationen, bei denen die Vorteile der Migration zur Gateway API den Aufwand möglicherweise noch nicht überwiegen.

LoadBalancer-Dienste

Mit der Service API können Sie Anwendungen, die als Pods in Ihrem Cluster ausgeführt werden, für externen oder internen Traffic bereitstellen. Wenn Sie einen Dienst vom Typ LoadBalancer erstellen, erstellt GKE automatisch einen Layer-4-Passthrough-Network Load Balancer (TCP/UDP) basierend auf den Parametern Ihres Dienstmanifests.

Bei Passthrough-Network Load Balancern bleiben die ursprünglichen Quell- und Ziel-IP-Adressen, das Kommunikationsprotokoll (z. B. TCP oder UDP) und die Portnummern (falls das Protokoll sie verwendet) gleich, wenn Traffic Ihre Backend-VMs erreicht. Das bedeutet, dass der Traffic direkt an die Backend-VMs oder -Pods weitergeleitet wird und der Load Balancer die Verbindungen nicht beendet. Die Backend-Dienste übernehmen das Beenden der Verbindungen und sorgen dafür, dass der Traffic nahtlos vom Client zum Dienst fließt.

Gewichtetes Load Balancing

Wenn Sie einen externen LoadBalancer-Dienst konfiguriert haben, auf den Clients außerhalb Ihres VPC-Netzwerk und Cloud de Confiance VMs zugreifen können, können Sie das gewichtete Load Balancing aktivieren. Beim gewichteten Load Balancing wird der Traffic basierend auf der Anzahl der bereitstellenden Pods auf jedem GKE-Knoten verteilt. Knoten mit mehr bereitstellenden Pods erhalten also einen größeren Anteil des Traffics als Knoten mit weniger Pods.

Eigenständige NEGs

Eine weitere Methode zum Verwalten Ihrer Load Balancer in GKE besteht darin, die Load Balancer-Komponenten selbst zu erstellen und GKE die NEGs verwalten zu lassen. Diese Art von Load Balancer wird als Proxy-Network Load Balancer bezeichnet. NEGs sind eine Möglichkeit, Gruppen von Backend-Endpunkten (z. B. Pods) für das Load Balancing darzustellen.

Diese Art von Load Balancer ist nur für TCP-Traffic vorgesehen. Proxy-Network Load Balancer verteilen TCP-Traffic auf Backends in Ihrem VPC-Netzwerk oder in anderen Cloud-Umgebungen. Der Traffic wird auf der Load-Balancing-Ebene beendet. Der Load Balancer leitet den Traffic dann weiter, indem er neue TCP-Verbindungen zum nächstgelegenen verfügbaren Backend herstellt.

Was ist containernatives Load Balancing?

Beim containernativen Load Balancing wird der Traffic gleichmäßig direkt an die IP-Adressen einzelner Pods (anstatt Knoten) mithilfe der GCE_VM_IP_PORT-NEGs verteilt. Mit GCE_VM_IP_PORT-NEGs können Sie Backend-Endpunkte entweder mit der primären internen IP-Adresse einer Compute Engine-VM oder mit einer IP-Adresse aus einem der konfigurierten Alias-IP-Bereiche der VM angeben.

Das containernative Load Balancing wird für alle von GKE verwalteten Layer-7-Load Balancer verwendet, einschließlich Gateway und Ingress sowie eigenständiger NEGs. LoadBalancer-Dienste verwenden kein containernatives Load Balancing. Sie können jedoch eine ähnliche Funktion erreichen, indem Sie das gewichtete Load Balancing aktivieren.

Das containernative Load Balancing bietet mehrere Vorteile, darunter eine verbesserte Netzwerkleistung und verbesserte Systemdiagnosen, da es direkt auf Pods ausgerichtet ist. Weitere Informationen finden Sie unter Containernatives Load Balancing.

Zusammenfassungstabellen

Verwenden Sie die folgenden Tabellen, um Ihre Load-Balancing-Konfiguration zu planen.

Load-Balancer-Typ auswählen

In der folgenden Tabelle sehen Sie, welcher Load Balancer-Typ für eine bestimmte Ressource (Gateway, Ingress oder LoadBalancer-Dienst) erstellt wird:

Kubernetes-Ressource Erstellter Load-Balancer-Typ
Application Load Balancer Passthrough-Network Load Balancer
Gateway
Eingehender Traffic
LoadBalancer-Dienst

Methode zum Erstellen eines Load Balancers auswählen

In der folgenden Tabelle sehen Sie die Optionen in GKE zum Erstellen des ausgewählten Load Balancers:

Load-Balancer-Typ Methoden zum Erstellen des ausgewählten Load Balancers
Gateway Eingehender Traffic LoadBalancer-Dienst Eigenständige NEGs
Globaler externer Application Load Balancer
Klassischer externer Application Load Balancer
Regionaler externer Application Load Balancer
Regionaler interner Application Load Balancer
Regionsübergreifender interner Application Load Balancer
Proxy-Network Load Balancer
(alle Typen)
Passthrough-Network Load Balancer
(intern und extern)

Nächste Schritte