In diesem Dokument werden die beiden Dataplane V2-Weiterleitungsmodi für das Load-Balancing und ihre Aktivierung für GKE on Bare Metal beschrieben. Dataplane V2 unterstützt zwei Weiterleitungsmodi für das Load-Balancing:
- Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT)
- Direct Server Return (DSR)
Der Weiterleitungsmodus für das Load-Balancing kann nur beim Erstellen eines Clusters konfiguriert werden.
SNAT-Load-Balancing
Die Quellnetzwerkadressübersetzung (Source Network Address Translation, SNAT) ist der Standardweiterleitungsmodus 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-Weiterleitungsmodus für 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 einem 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:
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-Weiterleitungsmodus 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:
DSR-Modus aktivieren
Fügen Sie der Clusterkonfigurationsdatei das Feld spec.clusterNetwork.forwardMode
hinzu und setzen Sie es auf dsr
, um den DSR-Modus zu aktivieren. Wie bereits erwähnt, ist der SNAT-Modus standardmäßig aktiviert. Sie können den SNAT-Modus explizit angeben, indem Sie forwardMode
auf snat
setzen. Der Weiterleitungsmodus für Dataplane V2-Load-Balancing kann nur beim Erstellen des Clusters konfiguriert werden.
apiVersion: baremetal.cluster.gke.io/v1
kind: Cluster
metadata:
name: lb-mode
namespace: cluster-lb-mode
...
spec:
clusterNetwork:
forwardMode: dsr # valid options are dsr or snat
pods:
cidrBlocks:
- 192.168.0.0/16
services:
cidrBlocks:
- 10.96.0.0/20
...
Der Wert forwardMode
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.