LoadBalancer-Dienstparameter

Mit Sammlungen den Überblick behalten Sie können Inhalte basierend auf Ihren Einstellungen speichern und kategorisieren.

Auf dieser Seite werden Parameter für Dienstmanifeste beschrieben, die das Verhalten und die Konfiguration des LoadBalancer-Dienstes steuern. Bevor Sie diese Seite lesen, sollten Sie mit den Konzepten der LoadBalancer-Dienste für Google Kubernetes Engine (GKE) vertraut sein.

Dienstparameter

GKE unterstützt die folgenden Parameter für LoadBalancer-Dienste.

Parameter Dienstfeld und -beschreibung Intern Extern Versionsunterstützung
Interne TCP/UDP-Load-Balancer networking.gke.io/load-balancer-type: "Internal"

Weist GKE an, einen internen TCP/UDP-Load-Balancer zu erstellen.

Weitere Informationen finden Sie unter Konzepte des LoadBalancer-Dienstes.

Alle unterstützten Versionen.
Back-End-Dienst-basierter Netzwerk-Load-Balancer cloud.google.com/l4-rbs: "enabled"

Weist GKE an, einen Back-End-Dienst-basierten Netzwerk-Load-Balancer zu erstellen.

Weitere Informationen finden Sie unter Konzepte des LoadBalancer-Dienstes.

GKE 1.24+
Richtlinie für externen Traffic spec.externalTrafficPolicy

Steuert, welche Knoten-VMs Systemdiagnosen des Load-Balancers bestehen und wie Pakete an Bereitschafts- und Bereitstellungs-Pods im Cluster weitergeleitet werden. Steuert auch, wie Knoten in GCE_VM_IP-NEGs gruppiert werden, wenn die GKE-Teileinstellung aktiviert ist.

Weitere Informationen finden Sie unter Konzepte des LoadBalancer-Dienstes.

GKE 1.14 und höher (1.23.4-gke.400 und höher für Windows-Knotenpool)
Systemdiagnose-Port spec.healthCheckNodePort

Stellt eine Load-Balancer-Systemdiagnose für LoadBalancer-Dienste bereit. Dieser Parameter ist nur relevant, wenn spec.externalTrafficPolicy Local ist.

Alle unterstützten Versionen.
Firewallregeln und Zulassungsliste für Quell-IP-Adressen spec.loadBalancerSourceRanges

Konfiguriert optionale Firewallregeln in GKE und im der VPC-netzwerk, um nur bestimmte Quellbereiche zuzulassen

Alle unterstützten Versionen.
Statische IP-Adresse spec.loadBalancerIP

Gibt eine statische IP-Adresse an, die der Weiterleitungsregel des Load-Balancers zugewiesen ist.

Alle unterstützten Versionen.
Netzwerkdienststufen metadata:annotations:cloud.google.com/network-tier

Gibt an, welche Netzwerkdienststufen GKE für die externe Weiterleitungsregel und IP-Adresse verwendet. Gültige Annotationswerte sind Standard und Premium (Standard).

GKE 1.19 und höher.
Benutzerdefiniertes Subnetz networking.gke.io/internal-load-balancer-subnet: SUBNET_NAME

Gibt ein Subnetz im VPC-Netzwerk und in der Region des Clusters an, die für die IP-Adresse der Weiterleitungsregel des internen TCP/UDP-Load-Balancers verwendet werden sollen.

Vorschau in GKE 1.17 und höher sowie 1.16.8-gke.10 und höher. Allgemein verfügbar in GKE 1.17.9-gke.600 und höher
Globaler Zugriff networking.gke.io/internal-load-balancer-allow-global-access: "true"

Ermöglicht, dass die IP-Adresse der Weiterleitungsregel für Clients in jeder Region des VPC-Netzwerks oder eines angeschlossenen Netzwerks zugänglich ist.

Vorschau in GKE 1.16 und höher. Allgemein verfügbar in GKE 1.17.9-gke.600 und höher.
Alle Ports

Es ist keine Annotation erforderlich, aber die GKE-Teileinstellung muss aktiviert sein.

GKE konfiguriert die Weiterleitungsregel automatisch für die Verwendung aller Ports, wenn in spec.ports[].port mindestens sechs (bis zu 100) eindeutige Ports angegeben sind.

GKE-Version 1.18.19-gke.1400 oder höher

Systemdiagnose-Port

Wie unter Load-Balancer-Systemdiagnosen und externalTrafficPolicy beschrieben, stellt GKE immer eine Load-Balancer-Systemdiagnose bereit, wenn ein externer Netzwerk-Load-Balancer oder ein interner TCP/UDP-Load-Balancer erstellt wird.

Ob Sie den Parameter healthCheckNodePort einrichten können, hängt von der folgenden externalTrafficPolicy-Konfiguration ab:

externalTrafficPolicy Systemdiagnose-Port
Cluster

Sie können spec.healthCheckNodePort nicht verwenden.

Local

Sie können einen benutzerdefinierten Port mit spec.healthCheckNodePort auswählen. Wenn nicht angegeben, weist die Kubernetes-Steuerungsebene einen Systemdiagnoseport aus dem Knotenportbereich zu.

Firewallregeln und Zulassungsliste für Quell-IP-Adressen

Wenn Sie einen LoadBalancer-Dienst erstellen, erstellt GKE eine VPC-Firewallregel, die dem Dienst entspricht. Jede Firewallregel hat die folgenden Eigenschaften:

  • Die Richtung der Firewallregel ist „ingress” und ihre Aktion ist „allow”. Die implizierte Firewallregel zum Ablehnen von eingehendem Traffic in Google Cloud bedeutet, dass GKE ein Modell auf der Zulassungsliste verwendet, wenn Sie Firewallregeln für eingehenden Traffic erstellen.
  • GKE legt das Protokoll und den Zielport der Firewallregel auf diejenigen fest, die in der spec.ports[]-Liste des Dienstes angegeben sind.
  • GKE legt das Ziel für die Firewallregel fest. Dazu legt es den Zielparameter auf Zieltags fest, die allen Knoten des Clusters zugewiesen sind.
  • Wenn der Dienst spec.loadBalancerSourceRanges[] enthält, legt GKE den Quellparameter der Firewallregel auf die IP-Adressen in dieser Liste fest. Wenn der Service loadBalancerSourceRanges[] nicht enthält, legt GKE den Quellparameter der Firewallregel auf alle IP-Adressen (0.0.0.0/0) fest.

Die für einen LoadBalancer-Dienst erstellte Firewallregel erlaubt Pakete, die dem Protokoll und den Zielports dieses Dienstes entsprechen, an alle folgenden Ziel-IP-Adressen:

  • Alle Pod-IP-Adressen im Cluster
  • Alle Knoten-IP-Adressen im Cluster
  • Alle IP-Adressen für Weiterleitungsregeln eines beliebigen LoadBalancer-Dienstes des Clusters.

Obwohl Firewallregeln die IP-Adressziele nicht einschränken, beschränken die folgenden Bedingungen das Trafficverhalten:

  • Für LoadBalancer-Dienste erstellte Weiterleitungsregeln leiten nur Pakete weiter, wenn diese Pakete mit dem Protokoll, der Ziel-IP-Adresse und den Ports der Weiterleitungsregel übereinstimmen.
  • Knoten lehnen Pakete ab, es sei denn, sie entsprechen einer gültigen Kombination aus Ziel-IP-Adresse und Port. Gültige Kombinationen aus Ziel-IP-Adresse und Port sind:

    • Eine Pod-IP-Adresse und ein containerPort für einen Container dieses Pods.
    • Eine Knoten-IP-Adresse und ein nodePort.
    • Eine IP-Adresse für die Weiterleitungsregel und der spec.ports[].port des LoadBalancer-Dienstes.
  • Mit Netzwerkrichtlinien können Sie weiter anpassen, wie Knoten Pakete zulassen oder ablehnen.

Dienste mit gemeinsamen Ports

Wenn ein Cluster zwei oder mehr Dienste enthält, die mindestens ein gemeinsames Protokoll und einen Zielport haben, ist der effektive Satz von Quellbereichen die Vereinigung von loadBalancerSourceRanges für alle Dienste, die dieses Protokoll und diese Zielportkombination angeben. Dies liegt daran, dass der Zielparameter einer Firewallregel für eingehenden Traffic die Ziel-IP-Adressen als alle IP-Adressen definiert, die einer VM zugeordnet sind.

Betrachten Sie einen Cluster mit zwei LoadBalancer-Diensten:

  • Der spec.ports[0].port des ersten Service ist der TCP-Port 80 und sein spec.loadBalancerSourceRanges=[100.10.0.0/16]. Der resultierende Load-Balancer, der diesem Dienst entspricht, hat die IP-Adresse 192.0.2.2.
  • Der spec.ports[0].port des zweiten Diensts ist der TCP-Port 80, spec.ports[1].port ist der TCP-Port 90 und seine spec.loadBalancerSourceRanges=[172.16.0.0/24]. Der resultierende Load-Balancer, der diesem Dienst entspricht, hat die IP-Adresse 198.51.100.3.

GKE erstellt zwei Firewallregeln für zulässigen eingehenden Traffic im Virtual Private Cloud-Netzwerk des Clusters. Beide Firewallregeln geben alle Knoten des Clusters als Ziele an:

  • Die erste Firewallregel lässt Pakete an den TCP-Zielport 80 aus der Quelle 100.10.0.0/16 zu.
  • Die zweite Firewallregel lässt Pakete an die TCP-Zielports 80 und 90 aus der Quelle 172.16.0.0/24 zu.

Die erste Weiterleitungsregel leitet den Traffic weiter, der mit dem Ziel 192.0.2.2:80 übereinstimmt. Die zweite Weiterleitungsregel leitet den Traffic weiter, der mit den Zielen 198.51.100.3:80 und 198.51.100.3:90 übereinstimmt. Alle drei der folgenden Ziele sind gültige Ziele auf jedem Knoten: 192.0.2.2:80, 198.51.100.3:80 und 198.51.100.3:90. Das bedeutet:

  • Beide Dienste akzeptieren Pakete zum TCP-Port 80 aus der Vereinigung der IP-Adressbereichsquellbereiche entweder aus 100.10.0.0/16 oder 172.16.0.0/24.
  • Der zweite Dienst akzeptiert Pakete an den TCP-Port 90 von 172.16.0.0/24.

Der effektive Satz von Quellbereichen für alle Dienste mit derselben Protokoll- und Zielportkombination wird zu allen IP-Adressen, wenn spec.loadBalancerSourceRanges für mindestens einen Dienst mit dieser Protokoll- und Zielportkombination ausgelassen wird. Wenn beispielsweise der zweite Dienst spec.loadBalancerSourceRanges weggelassen hat, lautet die Quelle der zweiten Firewall 0.0.0.0/0.

  • Beide Dienste akzeptieren Pakete an den TCP-Port 80 aus der Vereinigung der IP-Adressbereiche von 100.10.0.0/16 oder 0.0.0.0/0. Da der Bereich 0.0.0.0/0 den Bereich 100.10.0.0/16 enthält, ist die effektive Quelle für Pakete an TCP-Port 80 eine beliebige IP-Adresse.
  • Der zweite Dienst akzeptiert Pakete an den TCP-Port 90 von 0.0.0.0/0 (beliebige IP-Adresse).

Statische IP-Adresse

Sie können eine statische IP-Adresse erstellen und GKE so konfigurieren, dass diese der Weiterleitungsregel des Load-Balancers zugewiesen wird. Dadurch wird sichergestellt, dass die IP-Adresse des Load-Balancers gleich bleibt, auch wenn Sie Änderungen am LoadBalancer-Dienst vornehmen. Ohne diese Annotation kann sich die IP-Adresse, die GKE der Weiterleitungsregel eines externen Netzwerk-Load-Balancers oder eines internen TCP/UDP-Load-Balancers zuweist, beim Aktualisieren eines LoadBalancer-Dienstes ändern.

Um eine konsistente IP-Adresse beizubehalten, können Sie eine statische IPv4-Adresse für einen oder mehrere LoadBalancer-Dienste mit dem Parameter spec.loadBalancerIP angeben.

Wenn zwei oder mehr LoadBalancer-Dienste auf denselben spec.loadBalancerIP verweisen, muss jeder LoadBalancer-Dienst gemäß den folgenden Regeln eine eindeutige Kombination aus Protokollen und Ports verwenden:

Intern Extern
Weiterleitungsregel Die Weiterleitungsregel für einen internen TCP/UDP-Load-Balancer muss eine eindeutige Kombination aus interner IP-Adresse, Protokoll und Port verwenden. Die Weiterleitungsregel für einen externen Netzwerk-Load-Balancer muss eine eindeutige Kombination aus externer IP-Adresse, Protokoll und Portbereich verwenden.
Portbereich

Wenn für einen internen LoadBalancer-Dienst sechs oder mehr spec.ports[] angegeben sind, konfiguriert GKE die Weiterleitungsregel für den internen TCP/UDP-Load-Balancer, sodass alle Ports verwendet werden.

Wenn eine Weiterleitungsregel alle Ports verwendet, kann keine andere Weiterleitungsregel (d. h. kein anderer interner LoadBalancer-Dienst) dieselbe IP-Adresse verwenden.

Der Portbereich umfasst alle Ports, die der Dienst benötigt, kann aber auch häufig mehr Portnummern enthalten, die vom Dienst nicht verwendet werden.

Beispielsweise muss ein externer LoadBalancer-Dienst, der von einem zielpoolbasierten externen Netzwerk-Load-Balancer bereitgestellt wird und in seinem Dienstmanifest die Ports 80 und 443 angibt, eine Weiterleitungsregel verwenden, die denPortbereich von 80–443. Dieser Portbereich verhindert, dass andere externe LoadBalancer-Dienste einen der Ports zwischen 80 und 443 verwenden.

Region der statischen IP-Adresse Der interne TCP/UDP-Load-Balancer erfordert eine regionale interne IPv4-Adresse in derselben Region wie der Cluster. Der externe Netzwerk-Load-Balancer erfordert eine regionale externe IPv4-Adresse in derselben Region wie der Cluster.
Netzwerkdienststufen der statischen IP-Adresse Nicht konfigurierbar, da alle internen Adressen Premium-Stufe sind.

Die statische externe IP-Adresse, die Sie für die Weiterleitungsregel des externen Netzwerk-Load-Balancers reservieren, muss dieselbe Stufe verwenden, die in der Annotation metadata:annotations:cloud.google.com/network-tier des Servicemanifests angegeben ist.

Wenn die Annotation metadata:annotations:cloud.google.com/network-tier nicht vorhanden ist, muss die statische externe IP-Adresse, die Sie für die Weiterleitungsregel des externen Netzwerk-Load-Balancers reservieren, die Standardstufe des Projekts verwenden (Premium, sofern nicht anders konfiguriert).

Zusätzliche Anforderungen an statische IP-Adressen Die statische interne IP-Adresse, die Sie für die Weiterleitungsregel des internen TCP/UDP-Load-Balancers reservieren, muss den Zweck SHARED_LOADBALANCER_VIP haben und aus einem der folgenden Subnetz-IP-Adressbereiche stammen:
  • Wenn das Dienstmanifest ein benutzerdefiniertes Subnetz mit der Annotation networking.gke.io/internal-load-balancer-subnet angibt, muss die von Ihnen reservierte statische interne IP-Adresse aus dem primären Subnetz-IPv4-Adressbereich dieses benutzerdefinierten Subnetzes stammen.
  • Wenn im Dienstobjekt kein benutzerdefiniertes Subnetz angegeben ist, muss die von Ihnen reservierte statische interne IP-Adresse aus dem primären Subnetz-IPv4-Adressbereich des Subnetzes stammen.
Nicht zutreffend.

Benutzerdefiniertes Subnetz

Bei internen LoadBalancer-Diensten können Sie mit der Annotation networking.gke.io/internal-load-balancer-subnet ein vorhandenes Subnetz im selben VPC-Netzwerk und in derselben Region wie der Cluster angeben:

   metadata:annotations: networking.gke.io/internal-load-balancer-subnet: SUBNET_NAME

GKE wählt eine interne IPv4-Adresse für die Weiterleitungsregel des Load-Balancers aus dem primären IPv4-Adressbereich des angegebenen Subnetzes aus. Weitere Informationen finden Sie unter Weiterleitungsregeln für internen TCP/UDP-Load-Balancer.

In folgenden Fällen ist es nützlich, die Weiterleitungsregel des Load-Balancers in einem anderen Subnetz zu erstellen:

  • Das Trennen der IP-Adresse des Load-Balancers vom IP-Adressbereich für Knoten ist bei Firewallkonfigurationen für ausgehenden Traffic hilfreich, die für Clients gelten, die eine Verbindung zu den Services und Knoten des Clusters herstellen.

  • Dienste aus einem oder mehreren Clustern im selben VPC-Netzwerk und in derselben Region in einem gemeinsamen IP-Adressbereich gruppieren.

Wenn Sie einen internen Load-Balancer-Dienst ohne die Annotation networking.gke.io/internal-load-balancer-subnet angeben, wählt GKE die IP-Adresse für den Load-Balancer aus dem primären IPv4-Adressbereich des Subnetzes des Clusters aus. Die Weiterleitungsregel und die Knoten des Load-Balancers im Cluster verwenden denselben primären IPv4-Adressbereich des Subnetzes.

Sie können ein benutzerdefiniertes Subnetz für interne Load-Balancer in den folgenden GKE-Versionen erstellen:

  • Beta in GKE 1.17 und höher sowie 1.16.8-gke.10 und höher
  • Allgemein verfügbar in GKE 1.17.9-gke.600 und höher.

Weitere Informationen zum Zuweisen einer statischen IP-Adresse innerhalb des primären IPv4-Adressbereichs eines Subnetzes finden Sie unter Statische IP-Adresse.

Globaler Zugriff

Wenn die Annotation networking.gke.io/internal-load-balancer-allow-global-access für einen internen LoadBalancer-Dienst false ist oder nicht angegeben ist, erstellt GKE einen internen TCP/UDP-Load-Balancer, dessen Weiterleitungsregel den globalen Zugriff deaktiviert hat. Wenn der globale Zugriff deaktiviert ist, müssen sich Clients, die auf den Load-Balancer zugreifen müssen, in derselben Region und demselben VPC-Netzwerk oder in einem Netzwerk befinden, das mit dem VPC-Netzwerk des Clusters verbunden ist.

Wenn die Annotation networking.gke.io/internal-load-balancer-allow-global-access für einen internen LoadBalancer-Dienst true lautet, aktiviert GKE die globale Zugriffsoption für die Weiterleitungsregel des internen TCP/UDP-Load-Balancers. Clients, die sich in einer beliebigen Region des VPC-Netzwerks oder einem Netzwerk befinden, das mit dem VPC-Netzwerk des Clusters verbunden ist, können auf den Load-Balancer zugreifen.

Weitere Informationen zum globalen Zugriff gelten für Clients in einem verbundenen Netzwerk:

Alle Portweiterleitungsregeln

Weiterleitungsregeln für interne TCP/UDP-Load-Balancer unterstützen fünf eindeutige Portnummern oder alle Ports.

In GKE-Clustern mit deaktivierter GKE-Teileinstellung kann ein interner LoadBalancer-Dienst nur fünf eindeutige Ports in der Datei spec.ports[].port des Dienstes unterstützen.

In GKE-Clustern mit aktivierter GKE-Teileinstellung kann ein interner LoadBalancer-Dienst nur bis zu 100 Ports im spec.ports[].port des Dienstes unterstützen. Für interne LoadBalancer-Dienste mit sechs bis 100 eindeutigen spec.ports[].port-Einträgen konfiguriert GKE die Weiterleitungsregel des internen TCP/UDP-Load-Balancers so, dass alle Ports seit der Erstellung verwendet werden. Der GKE-Controller aktiviert alle Ports in der Weiterleitungsregel, da der Dienst mehr als fünf Ports hat. Wenn Sie eine Weiterleitungsregel für die Verwendung aller Ports konfigurieren, erstellt GKE nur Firewallregeln für zulässigen eingehenden Traffic für die spezifischen Ports, die in spec.ports[].port für den Service konfiguriert sind.

Weitere Informationen zu Weiterleitungsregeln des internen TCP/UDP-Load-Balancers und zu gültigen Portspezifikationen finden Sie unter Weiterleitungsregeln und Portspezifikationen.