Load-Balancing-Netzwerkmodus konfigurieren

In diesem Dokument werden die beiden Dataplane V2-Netzwerkmodi für das Load-Balancing und ihre Aktivierung für GKE on Bare Metal beschrieben. Vor der GKE on Bare Metal-Version 1.16.0 kann der Dataplane V2-Netzwerkmodus für das Load-Balancing nicht konfiguriert werden. Dataplane V2 unterstützte nur SNAT-Load-Balancing (Source Network Address Translation). Ab Clusterversion 1.16.0 können Sie den Load-Balancing-Netzwerkmodus beim Erstellen eines Clusters auf SNAT (Standard) oder Direct Server Return (DSR) konfigurieren.

SNAT-Load-Balancing

Die Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) ist der Standardnetzwerkmodus für Dataplane V2-Load-Balancing. Im SNAT-Modus wird die IP-Adresse des Clients jedoch nicht für Back-End-Pods beibehalten. Wenn das Paket vom Client den Load-Balancer-Knoten erreicht, wird es übersetzt und an den Worker-Zielknoten mit dem Back-End-Pod weitergeleitet. Der Back-End-Pod erkennt, dass die Anfrage vom Knoten des Load-Balancers und nicht vom Clientstandort stammt. Dadurch wird die Antwort an den Load-Balancer-Knoten zurückgegeben, umgekehrt übersetzt und an den Client zurückgesendet.

Paketfluss für SNAT

Mit dem SNAT-Netzwerkmodus für das Dataplane V2-Load-Balancing sieht der Paketfluss von einem externen Client zu einem Back-End-Pod und wieder zurück:

  • Ein Dienst vom Typ LoadBalancer wird dem Load-Balancer-Knoten zugewiesen und seine IP-Adresse 172.16.20.16 wird vom MetalLB-Lautsprecher beworben, der auf diesem Knoten ausgeführt wird.

  • Dataplane V2 übersetzt die Quell-IP-Adresse und den Quellport mit SNAT in <LB_NODE_IP>:52000 und leitet das Paket an den Worker-Knoten weiter.

  • Die Antwort wird an den Load-Balancer-Knoten zurückgesendet und die Zieladresse wird umgekehrt übersetzt.

Das folgende Diagramm zeigt den Paketfluss für den SNAT-Modus:

Paketfluss für Dataplane V2-Load-Balancing im SNAT-Modus

DSR-Load-Balancing

Durch Direct Server Return (DSR) werden Probleme mit dem SNAT-Load-Balancing behoben. Im DSR-Modus verwendet der Load-Balancer-Knoten IP-Optionen, um die Quelladresse des Clients zu speichern. Der Worker-Knoten kann das ursprüngliche Paket wiederherstellen und an den Back-End-Pod weiterleiten. Der Back-End-Pod kann sehen, dass das Paket von der IP-Adresse des Clients und nicht von der IP-Adresse des Load-Balancer-Knotens stammt. Infolgedessen kehrt das Rückgabepaket direkt an die Client-IP-Adresse zurück, anstatt zum Knoten des Load-Balancers zurück.

Dieser Modus löst nicht nur das Problem mit der Sichtbarkeit der Client-IP-Adresse, sondern spart auch die Bandbreite für den Load-Balancer-Knoten. Der zurückgegebene Traffic muss nicht den Load-Balancer-Knoten durchlaufen und der Load-Balancer-Knoten muss keine Verbindungen mehr verfolgen. Dieser Ansatz spart Arbeitsspeicher und gibt den Weiterleitungsport frei. Bei asymmetrischen Arbeitslasten, bei denen der Downloadtraffic viel höher als der Anfragetraffic ist, reduziert der DSR-Ablauf die Bandbreite erheblich.

Paketfluss für DSR

Mit dem DSR-Netzwerkmodus für Dataplane V2-Load-Balancing sieht der Paketfluss vom und dem externen Client zu einem Back-End-Pod und wieder zurück:

  • Ein Dienst vom Typ LoadBalancer wird dem Load-Balancer-Knoten zugewiesen und seine IP-Adresse 172.16.20.16 wird vom MetalLB-Lautsprecher beworben, der auf diesem Knoten ausgeführt wird.

  • Dataplane V2 leitet das Paket an den Worker-Knoten weiter und verwendet IP-Optionen, um die ursprüngliche Quell-IP-Adresse und den Port des Clients zu speichern.

  • Dataplane V2 auf dem Worker-Knoten leitet das Paket an den Back-End-Pod weiter.

  • Der Back-End-Pod stellt die Quell-IP-Adresse und den Quellport wieder her und antwortet dem Client.

Das folgende Diagramm zeigt den Paketfluss für den DSR-Modus:

Paketfluss für Dataplane V2-Load-Balancing im SNAT-Modus

DSR-Einschränkung

DSR wird nur für den Nicht-Tunnel-Modus unterstützt. In diesem Fall muss das Netzwerkmodell im flachen Modus aktiviert werden. Eine Anleitung zum Aktivieren des Netzwerkmodells im flachen Modus finden Sie unter Netzwerkmodell im flachen IPv4-Modus implementieren. Ist das Netzwerkmodell im Flat-Modus nicht aktiviert, sollte die Preflight-Prüfung fehlschlagen, wenn Sie versuchen, DSR zu aktivieren.

DSR-Modus aktivieren

Wie bereits erwähnt, ist der SNAT-Modus standardmäßig aktiviert. Zum Aktivieren des DSR-Modus fügen Sie der Clusterkonfigurationsdatei die folgende Annotation hinzu, bevor Sie den Cluster erstellen. In der Vorabversion wird für diese Funktion die Anmerkung preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable verwendet, um den DSR-Modus zu aktivieren. Um den DSR-Modus zu deaktivieren, entferne die Anmerkung oder setze sie auf disable. Andere Werte werden nicht akzeptiert und verursachen Validierungsfehler.

apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
  name: bm
  namespace: cluster-bm
  annotations:
    preview.baremetal.cluster.gke.io/dpv2-lbmode-dsr: enable  # valid options: enable or disable
spec:
...

Der Wert kann nach dem Erstellen des Clusters nicht mehr geändert werden. Prüfen Sie, ob Sie die richtige Option für Ihre Anforderungen konfiguriert haben, bevor Sie den Cluster erstellen.