2015-11-28 5 views
15

ich die CoreOS K8S Cluster auf Mac OSX laufen, die es läuft in VirtualBox + Vagrant bedeutetWie ein Kubernetes Service belichten extern NodePort mit

ich in meiner service.yaml Datei:

spec: 
    type: NodePort 

wenn ich tippe:

kubectl get services 

ich sehe:

NAME    CLUSTER_IP  EXTERNAL_IP PORT(S) SELECTOR         
kubernetes  10.100.0.1  <none>  443/TCP <none>        
my-frontend  10.100.250.90 nodes   8000/TCP name=my-app 

Was ist die "Nodes" externe IP? Wie greife ich extern auf my-frontend zu? Hier

+1

Ich glaube nicht, die gewählte Antwort auf die Frage widerspiegelt. Hier ist eine zusätzliche Antwort, die das obige beantwortet: https://stackoverflow.com/a/45805655/1663462 –

Antwort

16

Neben „NodePort“ Arten von Diensten gibt es einige zusätzliche Möglichkeiten der Lage sein, zu interagieren mit Kubernetes Dienste von außerhalb des Clusters:

  • Verwenden Service-Typ „LoadBalancer“. Es funktioniert nur für einige Cloud-Anbieter und funktioniert nicht für virtualbox, aber ich denke, es wird gut sein, über diese Funktion zu wissen. Link to the documentation
  • Verwenden Sie eine der neuesten Funktionen namens "Ingress". Hier ist eine Beschreibung von Handbuch "Ein Ingress ist eine Sammlung von Regeln, die eingehende Verbindungen zu den Cluster-Diensten zu erreichen. Es kann Dienste extern erreichbaren URLs, Last-Balance-Verkehr, SSL zu beenden, bieten Namen basierte virtuelle Hosting usw. ". Link to the documentation
  • Wenn Kubernetes nicht strenge Anforderungen und Sie auf die neueste Openshift Ursprung wechseln können (die „Kubernetes auf Steroiden“ ist) können Sie Ursprungs-Feature verwenden, als „Router“.
1

ist der Doc auf Knotenadressen: http://kubernetes.io/docs/admin/node/#addresses

Sie können die Portnummer von nodePort angeben, wenn Sie den Dienst angeben. Wenn Sie einen Port nicht manuell angegeben haben, weist das System einen für Sie zu. Sie können kubectl get services -o yaml und den Hafen an spec.ports finden [*] nodePort, wie hier im doc vorgeschlagen. https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/services.md#type-nodeport

Und Sie können Ihre Front-End an {Knoten externe Adressen} zugreifen: {} nodePort

Hoffe, das hilft.

3

Der einfachste Weg, um das Host-Ports kubectl describe services my-frontend ist zu bekommen. Der Knoten-Port wird angezeigt.

Auch können Sie die api überprüfen:

  • api/v1/namespaces/{namespace_name}/services/{service_name}

oder Auflistung:

  • api/v1/namespaces/default/services

Last, können Sie wählen, eine feste nodePort in die service.yml

7

Ich nehme an, Sie MiniKube für Kubernetes verwenden. In einem solchen Fall Ihre Knoten-IP-Adresse zu identifizieren, verwenden Sie den folgenden Befehl ein:

.\minikube.exe ip 

Wenn der exponierte Dienst type = Nodeport ist, der freigelegte Port prüfen Sie den folgenden Befehl verwenden:

.\kubectl.exe describe service <service-name> 

Suchen Sie im Ergebnis nach dem Knotenport. Auch, wenn Sie all diese Details über nette UI haben wollen, dann können Sie das Kubernetes Armaturenbrett vorhanden unter der folgenden Adresse starten:

<Node-ip>:30000