2016-11-23 10 views
3

В minikube, как выставить сервис, используя nodeport?Открыть порт в minikube

Например, я начинаю кластер kubernetes, используя следующую команду и создать и выставить порт так:

$ minikube start 
$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080 
$ kubectl expose deployment hello-minikube --type=NodePort 
$ curl $(minikube service hello-minikube --url) 
CLIENT VALUES: 
client_address=192.168.99.1 
command=GET 
real path=/ .... 

Теперь, как получить доступ к открытым услугам от хоста? Я предполагаю, что узел minikube должен быть настроен так, чтобы выставлять этот порт.

+0

Можете ли вы уточнить, что вы подразумеваете под «доступом открытая услуга от хоста "? Похоже, что вы уже можете получить доступ к сервису hello-minikube от хоста по адресу, указанному: 'minikube service hello-minikube --url' –

+0

Да, вы правы. На самом деле это была ошибка конфигурации, из-за которой порт не был доступен с хоста, и я был в замешательстве, что мне нужно изменить некоторые настройки брандмауэра, чтобы сделать его доступным. – KarateKid

ответ

14

Я не совсем уверен, что вы спрашиваете, поскольку кажется, что вы уже знаете о команде minikube service <SERVICE_NAME> --url, которая даст вам URL-адрес, где вы можете получить доступ к сервису. Для того, чтобы открыть открытую службу, команда minikube service <SERVICE_NAME> может быть использован:

$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080 
deployment "hello-minikube" created 
$ kubectl expose deployment hello-minikube --type=NodePort 
service "hello-minikube" exposed 
$ kubectl get svc 
NAME    CLUSTER-IP EXTERNAL-IP PORT(S) AGE 
hello-minikube 10.0.0.102 <nodes>  8080/TCP 7s 
kubernetes  10.0.0.1  <none>  443/TCP 13m 

$ minikube service hello-minikube 
Opening kubernetes service default/hello-minikube in default browser... 

Эта команда откроет указанную службу в вашем браузере по умолчанию. Вот сервисная документация minikube: https://github.com/kubernetes/minikube/blob/master/docs/minikube_service.md

Существует также --url вариант для печати URL сервиса, который является то, что получает открыт в браузере:

$ minikube service hello-minikube --url 
http://192.168.99.100:31167 
+0

На моем Linux-хосте он не может найти порт '$ kubectl expose deploy hello-minikube --type = NodePort Ошибка: не удалось найти порт через флаг --port или introspection' – Stephane

2

minikube работает на чем-то вроде 192.168.99.100. Таким образом, вы должны иметь доступ к нему на узле, на котором вы показывали свою службу. Например, например, ваш nodeport равен 30080, тогда ваша услуга будет доступна как 192.168.99.100:30080.

Чтобы получить микрокабель ip, запустите команду minikube ip.

Update 14 Сентября 2017:

Вот небольшой пример, который работает с minikube v0.16.0.

1) Выполните следующие команды, чтобы создать Nginx работает на 8080 и переадресацию SVC nodeport к нему:

$ kubectl run hello-minikube --image=gcr.io/google_containers/echoserver:1.4 --port=8080 
deployment "hello-minikube" created 
$ kubectl expose deployment hello-minikube --type=NodePort 
service "hello-minikube" exposed 

2) Найдите nodeport используемый SVC:

$ k get svc hello-minikube 
NAME    CLUSTER-IP EXTERNAL-IP PORT(S)   AGE 
hello-minikube 10.0.0.76 <nodes>  8080:30341/TCP 4m 

3) Найти minikube ф:

$ minikube ip 
192.168.99.100 

4) Поговорите с ним с завитком:

$ curl 192.168.99.100:30341 
CLIENT VALUES: 
client_address=172.17.0.1 
command=GET 
real path=/ 
... 
+1

Это не похоже на правду. – macrael

+0

Не работает в мини-микропроцессоре MacOS – icordoba

+0

1) kubernetes назначает IP-порт и открытую услугу 2) что IP и порт работают на виртуальной машине с виртуальным IP-адресом, к которому у вашего ноутбука нет собственного доступа. – ives