Ü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
- Netzwerkübersicht
- Mehr über Compute Engine-Load-Balancer erfahren
- Informationen zu internen Load-Balancern
- Anwendungen extern mithilfe von Diensten verfügbar machen