2015-12-23 7 views
12

Ich habe gerade mit Kubernetes gestartet und ich bin verwirrt über den Unterschied zwischen NodePort und LoadBalancer Art von Service.Kubernetes: Unterschied zwischen NodePort und LoadBalancer

Der Unterschied, den ich verstehe, ist, dass LoadBalancer UDP nicht unterstützt, aber abgesehen davon, wenn wir einen Service entweder Knotenport oder Loadbalancer erstellen, erhalten wir eine Service-IP und einen Port, einen NodePort und Endpunkte.

Von Kubernetes Doc:

NodePort: auf der Spitze eines cluster internen IP aufweist, belichten den Dienst auf einem Port auf jedem Knoten des Clusters (der gleiche Port auf jedem Knoten). Sie können den Service auf jedem NodeIP: NodePort Adresse kontaktieren.

LoadBalancer: auf der Spitze eines cluster interne IP aufweist und Dienst auf einem NodePort Belichten Außerdem stellen die Cloud-Anbieter für eine Last Balancer die belichtet als NODEIP zum Dienst weiterleitet: NodePort für jeden Knoten.

So werde ich immer auf den Dienst auf nodeip zugreifen: nodeport. Mein Verständnis ist, wenn wir auf den Knoten: nodeport zugreifen, wird der Kubeproxy die Anfrage abfangen und sie an den entsprechenden Pod weiterleiten.

Die andere Sache über LoadBalancer erwähnt ist, dass wir eine externe LB haben können, die LB zwischen den Knoten. Was hindert uns daran, eine LB für Dienste zu setzen, die als Knotenport erstellt wurden?

Ich bin wirklich verwirrt. Die meisten Dokumente oder Tutorials sprechen nur über den LoadBalancer-Dienst, daher konnte ich im Internet nicht viel finden.

Ich schätze, wenn jemand meine Zweifel klären kann.

Dank

+0

Es macht intuitiv Sinn, aber wissen Sie, wo die Dokumentation sagt, dass LoadBalancer UDP nicht unterstützt? – Drux

Antwort

6

Nichts hindert Sie daran, eine externe Load Balancer vor Ihrem Knoten und verwenden Sie die NodePort Option platzieren.

Die LoadBalancer-Option wird nur verwendet, um Ihren Cloud-Anbieter automatisch nach einer neuen Software LB-Instanz zu fragen, die automatisch im Hintergrund ausgeführt wird.

Ich bin nicht auf dem neuesten Stand der Cloud-Anbieter werden noch unterstützt, aber ich sah es für Compute Engine und OpenStack bereits funktioniert.

+1

Danke für den Kommentar. Ich verstehe den "automatischen" Teil nicht. Welche Tutorials ich auch gelesen oder angesehen habe, in jedem werden die IPs des Knotens in den öffentlichen IP-Parameter des Dienstes gesetzt und dann in LB ex konfiguriert. Nginx, jeder demonstriert es. – Jardanian

+1

Viele Cloud-Anbieter haben die Möglichkeit, Ihren Datenverkehr bereits auf ihrer Netzwerkebene an Ihre Knoten zu luden. Diese Funktion kann automatisch durch Kubernetes aktiviert werden, indem Sie Ihren Servicetyp auf LoadBalancer einstellen. Beispiel: • Google: cloud.google.com/compute/docs/load-balancing • Amazon: aws.amazon.com/de/elasticloadbalancing • OpenStack: wiki.openstack.org/wiki/Neutron/LBaaS – Zahlex

+0

https: // groups .google.com/forum/#!topic/kubernetes-sig-network/B-A_RuqpFWk könnte helfen, die verschiedenen Loadbalancing-Setups zu verdeutlichen –