2015-11-28 3 views
15

Я бегу кластер CoreOS K8S на Mac OSX, а это значит, он работает внутри VirtualBox + VagrantКак выставить услугу Kubernetes извне с помощью NodePort

у меня в service.yaml файле:

spec: 
    type: NodePort 

Когда я типа:

kubectl get services 

Я вижу:

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 

Что такое «узлы» внешнего IP-адреса? Как мне получить доступ к внешнему внешнему интерфейсу?

+1

Не думаю, что выбранный ответ отражает вопрос. Ниже приведен дополнительный ответ, который отвечает на вышеизложенное: https://stackoverflow.com/a/45805655/1663462 –

ответ

16

В дополнение к «NodePort» виды услуг есть некоторые дополнительные способы, чтобы иметь возможность взаимодействовать с kubernetes услуг из-за пределов кластера:

  • типа Используйте сервис «LoadBalancer». Он работает только для некоторых облачных провайдеров и не будет работать для виртуального бокса, но я думаю, что будет хорошо знать об этой функции. Link to the documentation
  • Используйте одну из последних функций, называемую «вход». Вот описание из руководства «Ingress - это набор правил, позволяющих входящим соединениям доставлять службы кластера. Он может быть настроен на предоставление сервисов для доступа к внешним URL-адресам, трафик баланса нагрузки, прекращение SSL, предоставление виртуального хостинга на основе имени и т. Д. ". Link to the documentation
  • Если kubernetes не является строгим требованием, и вы можете переключиться на новейшее начало спуска влево (это «кубернете на стероидах»), вы можете использовать функцию начала, называемую «маршрутизатор».
1

Вот документ по адресам узлов: http://kubernetes.io/docs/admin/node/#addresses

Вы можете указать номер порта nodePort при указании услуг. Если вы не указали вручную порт, система выделит его для вас. Вы можете kubectl get services -o yaml и найти порт на spec.ports [*] nodePort, как это было предложено в документе здесь:. https://github.com/kubernetes/kubernetes/blob/master/docs/user-guide/services.md#type-nodeport

И вы можете получить доступ к переднему концу на {внешних адресов узлов}: {} nodePort

Надеюсь, что это поможет.

3

Самый простой способ получить порты хоста - kubectl describe services my-frontend. Отобразится порт узла.

Также вы можете проверить API:

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

или перечислить все:

  • api/v1/namespaces/default/services

Наконец, вы можете выбрать фиксированный nodePort в service.yml

7

Я предполагаю, что вы используете MiniKube для Kubernetes. В таком случае, чтобы определить ваш узел IP-адрес, используйте следующую команду:

.\minikube.exe ip 

Если открытая услуга типа = Nodeport, чтобы проверить обнаженный порт использовать следующую команду:

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

Проверьте вывод узла в результате. Кроме того, если вы хотите получить все эти данные через хороший пользовательский интерфейс, вы можете запустить панель приборов Kubernetes по следующему адресу:

<Node-ip>:30000 
Смежные вопросы