Открыть порт в мини-кубе
В минибуке, как открыть службу с помощью nodeport?
Например, я запускаю кластер 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=/ ....
Теперь, как получить доступ к открытой службе с хоста? Я предполагаю, что мини-куб node должен быть настроен так, чтобы выставить этот порт.
Ответы
Ответ 1
Я не совсем уверен, что вы спрашиваете, поскольку, похоже, вы уже знаете о команде 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
Ответ 2
Minikube работает на что-то вроде 192.168.99.100
. Таким образом, вы должны иметь доступ к нему через NodePort
на NodePort
вы предоставляете свои услуги. Например, скажем, ваш NodePort
30080
, то ваш сервис будет доступен как 192.168.99.100:30080
.
Чтобы получить миникуб ip, запустите команду minikube ip
.
Обновление 14 сентября 2017 г.:
Вот небольшой пример, который работает с minikube v0.16.0
.
1) Запустите приведенные ниже команды для создания nginx, работающего на 8080, и переадресации на него NodePort
svc
:
$ 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) Найдите нодпорт, используемый svc:
$ kubectl get svc hello-minikube
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-minikube 10.0.0.76 <nodes> 8080:30341/TCP 4m
3) Найдите миникуб ip:
$ minikube ip
192.168.99.100
4) Поговорите с ним с помощью curl:
$ curl 192.168.99.100:30341
CLIENT VALUES:
client_address=172.17.0.1
command=GET
real path=/
...
Ответ 3
Поскольку minikube предоставляет доступ через nodeIP:nodePort
а не через localhost:nodePort
, вы можете добиться этого, используя kubectl
переадресации портов kubectl
. Например, если вы используете сервис mongodb:
kubectl port-forward svc/mongo 27017:27017
Это выставило бы сервис на localhost:27017
, FWIW. Кроме того, вы можете выяснить, как запустить это в фоновом режиме.
Ответ 4
Просто замечание для тех, кто ищет ответы об отказе в соединении: если ваш мини-куб не работает на "что-то вроде 192.168.99.100", вы, вероятно, работаете с другим vm-драйвером, таким как "none". В этом случае удалите кластер Minikube и перестройте его, используя настройки по умолчанию. это будет работать.... иш... я не могу заставить работать туннель...