Was bedeutet der Userspace-Modus im Proxy-Modus von Kube-Proxy?

8

kube-proxy hat eine Option namens --proxy-mode, und laut der Hilfemeldung kann diese Option userspace oder iptables sein (siehe unten)

%Vor%

Ich kann nicht herausfinden, was userspace hier bedeutet.

Jeder kann mir sagen, was das Arbeitsprinzip ist, wenn Kube-Proxy im Userspace Modus läuft?

    
ax003d 18.03.2016, 15:25
quelle

1 Antwort

29

Userspace und iptables beziehen sich auf die eigentliche Verbindungsweiterleitung. In beiden Fällen werden lokale iptables-Regeln installiert, um abgehende TCP-Verbindungen abzufangen, deren Ziel-IP-Adresse einem Dienst zugeordnet ist.

Im Benutzermodus wird die iptables-Regel an einen lokalen Port weitergeleitet, an dem ein go binary (kube-proxy) auf Verbindungen wartet. Die Binärdatei (die im Benutzerbereich ausgeführt wird) beendet die Verbindung, richtet eine neue Verbindung mit einem Back-End für den Dienst ein und leitet anschließend Anforderungen an das Back-End und Antworten an den lokalen Prozess zurück. Ein Vorteil des Userspace-Modus ist, dass die Anwendung, wenn die Verbindung von einer Anwendung erstellt wird, die Verbindung zu einem anderen Back-End erneut versuchen kann, wenn die Verbindung verweigert wird.

Im iptables-Modus werden die iptables-Regeln installiert, um Pakete, die für einen Service bestimmt sind, direkt an ein Backend für den Service weiterzuleiten. Dies ist effizienter als das Verschieben der Pakete vom Kernel zum Kube-Proxy und dann zurück zum Kernel, was zu einem höheren Durchsatz und einer besseren Tail-Latenz führt. Der Hauptnachteil besteht darin, dass es schwieriger zu debuggen ist, da anstelle einer lokalen Binärdatei, die ein Protokoll in /var/log/kube-proxy schreibt, Sie Protokolle aus den iptables-Regeln des Kernels überprüfen müssen.

In beiden Fällen wird eine Kube-Proxy-Binärdatei auf Ihrem Rechner ausgeführt. Im Userspace-Modus fügt es sich selbst als Proxy ein; Im iptables-Modus wird iptables konfiguriert, anstatt die Verbindungen selbst herzustellen. Das selbe Binary funktioniert in beiden Modi, und das Verhalten wird über ein Flag oder durch Setzen einer Annotation im Apiserver für den Knoten umgeschaltet.

    
Robert Bailey 18.03.2016, 15:46
quelle

Tags und Links