2017-04-26 7 views
0

Ich habe eingesetzt und Dienstleistungen für socketcluster, scc-broker und scc-state auf kubernetes lokal über minikube direkt durch Verwendung der Docker-Dateien (siehe diese link für .yaml-Dateien) erstellt. Und ich habe auch einen Service für ingress innerhalb des gleichen Clusters mit der Datei .yaml, die in dem Link, den ich erwähnt habe, bereitgestellt. Soweit ich verstehe, sind diese Dienste standardmäßig ClusterIP.Einsatz auf minikube lokal

Die Bereitstellung der Dienste funktioniert ordnungsgemäß auf dem VM (Minikubes). Des Status wird auf dem Kubernetes Armaturenbrett für

  • Schoten laufen

  • Einsatz

Aber die Frage, die ich bin vor ist, dass es keine öffentlichen Endpunkte von scc-Zustand ausgesetzt ist , SCC-Broker, socketcluster-Server. Derzeit kann ich nicht verstehen, wie ich auf die Dienste extern zugreifen kann, d. H. Außerhalb der virtuellen Maschine (die auf Minikube läuft).

Die Bilder wurden direkt aus den kubernetes-YML-Dateien erstellt, wobei die Ingress-TLS-Sicherheit deaktiviert war.

Verpasse ich irgendeinen Aspekt beim Zugriff auf den socketcluster auf dem Hostcomputer? Sollte ich den Diensttyp auf einen anderen Typ als ClusterIP festlegen, da ich weiß, dass die Verwendung dieses Typs sicherstellt, dass der Dienst nur innerhalb des Clusters verfügbar gemacht wird. Aber wieder mein Zweifel ist, dass, wenn ich ingress verwende, es helfen sollte, auf die Dienste außerhalb der VM zuzugreifen. Muss ich ein ingress controller separat wie NGINX haben?

Jede Leitung wird zu schätzen wissen.

Danke!

P.S. Nach this Anleitung für die Bereitstellung.

Antwort

1

Kubernetes stellt nichts außerhalb des privaten Containernetzwerks aus, es sei denn, Sie teilen es ausdrücklich mit. Die gemeinsamen Wege zu tun, dass

  • ein Service mit type: LoadBalancer Verwenden Sie sind eine öffentliche IP an einen Cloud-Service gebunden zu bekommen. Dies ist nicht auf Minikube verfügbar
  • Verwenden Sie eine Service mit type: NodePort, um einen Port im öffentlichen Netzwerk jedes Knotens freizulegen. Dies ist die empfohlene Vorgehensweise für Minikubes (https://github.com/kubernetes/minikube#networking)
  • Erstellen Sie Ihre Pods mit hostNetwork: true, um das Containernetzwerk zu überspringen und das Hostnetzwerk zu verwenden (z. B. das Teilen derselben IP als Knoten selbst).Dies ist im Allgemeinen weniger nützlich als die beiden vorherigen Optionen, außer in ganz bestimmten Fällen.

Die Ressource Ingress steht nicht im Zusammenhang mit externer Konnektivität. Wenn Sie einen Ingress-Controller bereitgestellt haben, verwendet er die Ingress Ressourcen, die Sie zur Konfiguration selbst erstellen. Zum Beispiel erzeugt der nginx-ingress-controller (https://github.com/kubernetes/ingress/tree/master/controllers/nginx) im Wesentlichen einen server Block in der nginx-Konfiguration für jede Ingress. Der Ingress-Controller selbst müsste jedoch weiterhin dem externen Netzwerk unter Verwendung eines Service mit type: LoadBalancer oder type: NodePort ausgesetzt werden.

+0

Also meinst du das ..? Ich brauche keinen Ingress/Ingress-Controller-Dienst, wenn ich meine Dienste nur als NodePort-Typ in den "Kubernetes" lege. – Roshan

+0

Das ist richtig. Wenn Sie Ihren Dienst als 'type: NodePort' einstellen, werden die darunter liegenden Pods auf der IP-Adresse des Minikubes angezeigt (z. B. 192.168.99.1) – coreypobrien

+0

Danke @coreypobrien! – Roshan

1

Wenn Sie der minikube-Dokumentation https://github.com/kubernetes/minikube#quickstart folgen, werden Sie aufgefordert, Service mit type: NodePort zu erstellen.

Führen Sie dann kubectl get services aus, um die zugewiesene IP-Nummer für Ihren Dienst zu finden, und verwenden Sie minikube ip, um die IP-Adresse von minikube VM zu finden. Dann legen Sie diese beiden zusammen und greifen Sie von Ihrem Laptop aus auf den Dienst zu.

+0

danke für Ihre Antwort, aber was ich denke, dass Putting-Dienste wie ClusterIP/NodePort nicht auswirken, wenn ich einen Ingress-Controller verwende, um meine Dienste der Außenwelt zu offenbaren .correct mich, wenn ich falsch liege. – Roshan