TCP/UDP-Load-Balancing konfigurieren


Übersicht

Sie können einen TCP/UDP-Load-Balancer erstellen. Erstellen Sie dazu einen Dienst mit type: LoadBalancer in der Spezifikation. Auf dieser Seite werden die Parameter erläutert, mit denen Sie LoadBalancer-Dienste konfigurieren können. Weitere Informationen zu internen Load-Balancern finden Sie unter Internen Passthrough-Netzwerk-Load-Balancer verwenden. Weitere Informationen zu externen Load-Balancern finden Sie unter Anwendungen über Dienste freigeben.

Dienstparameter

Die folgenden Parameter werden für LoadBalancer-Dienste von Google Kubernetes Engine (GKE) unterstützt.

Feature Beschreibung Dienstfeld Unterstützung für GKE-Version
Richtlinie für internen Traffic Hiermit können interne Trafficbeschränkungen nur an Endpunkte innerhalb des Knotens weitergeleitet werden, von dem der Traffic stammt. Dieser Parameter wird nicht für Cluster unterstützt, auf denen GKE Dataplane V2 ausgeführt wird. spec:internalTrafficPolicy GKE ab Version 1.22
Richtlinie für externen Traffic Konfiguriert, ob externer Traffic auf GKE-Knoten per Load-Balancing verteilt wird spec:externalTrafficPolicy GKE 1.14 und höher (1.23.4-gke.400 und höher für Windows-Knotenpool)
Load-Balancer-Quellbereiche Konfiguriert optionale Firewallregeln in GKE und in der VPC, um nur bestimmte Quellbereiche zuzulassen spec:loadBalancerSourceRanges Alle unterstützten Versionen
IP-Adresse des Load-Balancers Gibt eine IP-Adresse für die Load-Balancer an spec:loadBalancerIP Alle unterstützten Versionen
Alle Ports Die Fähigkeit des TCP/UDP-Load-Balancers, alle Ports anstelle bestimmter Ports weiterzuleiten Für interne Passthrough-Netzwerk-Load-Balancer, die durch die Teilmengeneinstellung unterstützt werden. Für externe Load-Balancer, die für alle Versionen unterstützt werden.
Netzwerkdienststufen Geben Sie an, welche Netzwerkstufe ein Google Cloud-Load-Balancer verwenden soll. Gültige Werte sind Standard und Premium (Standard). metadata:annotations:cloud.google.com/network-tier GKE 1.19+

Richtlinie für externen Traffic

Die externalTrafficPolicy ist eine Standarddienstoption, die festlegt, wie und ob der an einen GKE-Knoten gehende Traffic über Load-Balancing verteilt wird. Cluster ist die Standardrichtlinie, allerdings wird Local häufig verwendet, um die Quell-IP-Adresse von Traffic beizubehalten, der an einen Clusterknoten geht. Local deaktiviert das Load-Balancing auf dem Clusterknoten, sodass der von einem lokalen Pod empfangene Traffic die ursprüngliche Quell-IP-adresse sieht.

externalTrafficPolicy wird für interne LoadBalancer-Dienste (über den TCP/UDP-Load-Balancer) unterstützt. Das Verhalten des Load-Balancings hängt jedoch von der Herkunft des Traffics und der konfigurierten Trafficrichtlinie ab.

Traffic, der von außerhalb des Clusters an einen TCP/UDP-Load-Balancer stammt, verhält sich so, wenn sich im Cluster mindestens ein fehlerfreier Pod des Dienstes befindet:

  • Cluster-Richtlinie: Der Traffic wird auf einen beliebigen fehlerfreien GKE-Knoten im Cluster per Load-Balancing verteilt und dann vom Kube-Proxy an einen Knoten mit dem Pod gesendet.
  • Local-Richtlinie: Knoten, die keinen der Back-End-Pods haben, werden für den TCP/UDP-Load-Balancer als fehlerhaft eingestuft. Traffic wird nur an einen der verbleibenden fehlerfreien Clusterknoten mit dem Pod gesendet. Traffic wird nicht noch einmal vom Kube-Proxy weitergeleitet, sondern direkt an den lokalen Pod gesendet, wobei die IP-Headerinformationen intakt bleiben.

Wenn der an eine bestimmte IP-Adresse des LoadBalancer-Dienstes gehende Traffic von einem GKE-Knoten innerhalb des Clusters stammt, verhält sich der Traffic anders. In der folgenden Tabelle wird das Verhalten von Traffic zusammengefasst, der von einem Knoten oder Pod innerhalb des Clusters stammt und für ein Mitglieds-Pod eines LoadBalancer-Dienstes bestimmt ist:

externalTrafficPolicy Wird der Mitglieds-Pod des Dienstes auf demselben Knoten ausgeführt, von dem der Traffic ausgeht? Verhalten des Traffics
Cluster Ja Pakete werden an einen beliebigen Mitglieds-Pod gesendet, der sich auf demselben Knoten oder einem anderen Knoten befinden kann.
Cluster Nein Pakete werden an einen beliebigen Mitglieds-Pod gesendet, der sich auf einem anderen Knoten befinden muss.
Lokal Ja Pakete werden an einen beliebigen Mitglieds-Pod auf demselben Knoten gesendet.
Lokal Nein

Kubernetes bis einschließlich Version 1.14: Pakete werden gelöscht.

Kubernetes ab Version 1.15: Pakete werden an einen beliebigen Mitglieds-Pod gesendet, der sich auf einem anderen Knoten befinden muss.

Load-Balancer-Quellbereiche

Das Array spec: loadBalancerSourceRanges gibt einen oder mehrere interne oder externe IP-Adressbereiche an. loadBalancerSourceRanges beschränkt Traffic über den Load-Balancer auf die in diesem Feld angegebenen IP-Adressen. Mit dieser Konfiguration erstellt kube-proxy die entsprechenden iptables-Regeln in Kubernetes-Knoten. GKE erstellt außerdem automatisch eine Firewallregel in Ihrem VPC-Netzwerk. Wenn Sie dieses Feld weglassen, akzeptiert der Dienst Traffic von jeder IP-Adresse (0.0.0.0/0).

Weitere Informationen zur Dienstspezifikation finden Sie in der Referenz zur Service API.

IP-Adresse des Load-Balancers

Mit spec: loadBalancerIP können Sie eine bestimmte IP-Adresse für den Load-Balancer auswählen. Die IP-Adresse darf nicht von einem anderen internen Passthrough-Netzwerk-Load-Balancer oder Dienst verwendet werden. Wenn Sie das Feld weglassen, wird eine sitzungsspezifische IP-Adresse zugewiesen. Weitere Informationen finden Sie unter Statische interne IP-Adresse reservieren.

Wenn die IP-Adresse in spec: loadBalancerIP eine IP-Adresse der Standardstufe ist, ist die Annotation cloud.google.com/network-tier mit dem Wert Standard obligatorisch, da Google Kubernetes Engine eine Weiterleitungsregel mit derselben Netzwerkstufe wie die angegebene IP-Adresse erstellen muss. Seit Google Kubernetes Engine 1.17 ist die Standardnetzwerkstufe zum Erstellen von Weiterleitungsregeln Premium, unabhängig von der Standardnetzwerkstufe des Projekts.

Alle Ports

Der GKE-Controller legt automatisch das Feld „allPorts” in der Weiterleitungsregel fest, wenn mindestens fünf Ports in der Dienstspezifikation in GKE-Versionen 1.20.6 und höher oder Version 1.21 und höher vorhanden sind. Dieses Verhalten ist auch in den GKE-Versionen 1.18 und höher und 1.19 und höher verfügbar, wenn Sie die Teilmengeneinstellung des internen Passthrough-Netzwerk-Load-Balancers im Cluster aktivieren.

Wird ein interner Passthrough-Netzwerk-Load-Balancer jedoch manuell erstellt, können Sie die Instanzgruppe Ihrer Google Kubernetes Engine-Knoten als Backend auswählen. Kubernetes-Dienste mit type: NodePort sind über den internen Passthrough-Netzwerk-Load-Balancer verfügbar.

Netzwerkdienststufen

Die Annotation cloud.google.com/network-tier gibt an, welche Netzwerkdienststufe für die externe Weiterleitungsregel und IP-Adresse in GKE Version 1.19 und höher verwendet werden soll. Gültige Werte sind "Standard" und "Premium". Der Standardwert ist Premium.

Diese Annotation wird nur mit externen Load-Balancern unterstützt.

Nächste Schritte