2016-04-14 3 views
0

ausgesetzt werden Ich betreibe einen kubernetes-Cluster auf einem "Bare Metal" Ubuntu-Rechner, wie hier beschrieben http://kubernetes.io/docs/getting-started-guides/ubuntu/. Nachdem ich einen LoadBalancer Dienst zu erstellen, kann ich auf dem IP-Adresse sehen, es läuft:Wie kubernetes-Dienst von Bare-Metal-Cluster

kubectl describe services sonar 
Name:   sonar 
IP:    10.0.0.170 
Port:   <unset> 9000/TCP 
Endpoints:  172.17.0.2:9000 
. . . 

Dann ist diese mit nginx auf die Welt, die ich aussetzen außerhalb des Kubernetes Cluster ausgeführt wird. Toll, aber bei der nächsten Servicebereitstellung ändert sich die IP. Wie kann ich damit umgehen? Reparieren Sie die IP, verwenden Sie die Umgebungsvariablen, oder anders?

Antwort

2

Ohne Ihre Dienstdefinition gesehen zu haben, klingt es für mich so, als ob Sie einen NodePort Diensttyp anstelle eines LoadBalancer wünschen. Mit einem NodePort-Dienst würden Sie NGINX einfach auf die IP-Adresse des Ubuntu-Computers und den in der Service-Definition angegebenen Port verweisen. Solange die Adresse des Ubuntu-Rechners stabil ist, sollte alles in Ordnung sein.

Wenn Sie Kubernetes auf mehreren Computern ausführen, fügen Sie einfach die IP-Adressen aller Maschinen zu Ihrem NGINX-Rechner hinzu und lassen Sie den Lastenausgleich durchführen.

Weitere Informationen zu den verschiedenen Servicetypen finden Sie hier: http://kubernetes.io/docs/user-guide/services/#publishing-services---service-types

+0

Vielen Dank, was ich in der Dokumentation gelesen habe Ich brauche 'NodePort' hier und nicht ein' LoadBalancer' in der Tat. –

2

Haftungsausschluss: Ich für Stackpoint arbeiten, nachdem verschiedene Möglichkeiten untersuchen wir Ingress-Controller für unser Produkt entschieden, so meine Antwort auf ingresses vorgespannt ist.

Mit ingress + ingress Controller können Sie externe Lasten auf die Pods-Endpunkte ausgleichen. Während Services Ressourcen sind, deren Hauptziel darin besteht, Pods zu verfolgen und (unter anderem) Routen zu erstellen, ist Ingress eine viel bessere Möglichkeit, Regelregeln zu definieren. Inzwischen es:

  • Hostnamen Unterstützt
  • TLS-Spezifikation unterstützt Geheimnisse mit
  • Route auf Pfaden basierend Kann
  • definieren Standard-Backends

Der große Nachteil bei Eindringen ist, dass Sie benötigen eine Ingress-Steuerung, die auf Ingress wartet, Endpunkte auflöst, Konfigurationsänderungen an den Balancer kommuniziert und sie gegebenenfalls neu lädt. Da wir die Kontrolle darüber haben, was der Ingress dem Balancer sagen wird, können wir Keepalives, Sticky-Sitzungen, Healthchecks usw. konfigurieren.

Mit Hilfe von Diensten haben Sie nicht die volle Kontrolle über alle diese Parameter.

Es gibt eine nginx example bei kubernetes/contrib, die die meisten Szenarien entsprechen sollte. Bei Stackpoint verwenden wir unseren eigenen haproxy Ingress Controller und sind ziemlich zufrieden mit den Ergebnissen (und haben Ingress-Management von unserer UI in Kürze)

Die ingress kubernetes page enthält mehr Informationen, und im unteren Teil einen Abschnitt mit einigen Links zu die Alternativen.