Способы предоставления услуги Kubernetes извне, используя NodePort



Я запускаю кластер CoreOS k8s на Mac OSX, что означает, что он работает внутри VirtualBox + Vagrant



У меня на службе.файл 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? Как получить внешний доступ к своему интерфейсу?

531   4  

4 ответов:

В дополнение к типам сервисов "NodePort" существует несколько дополнительных способов взаимодействия с сервисами kubernetes извне кластера:

  • Используйте сервис типа "LoadBalancer". Он работает только для некоторых облачных провайдеров и не будет работать для virtualbox, но я думаю, что будет полезно узнать об этой функции. Ссылка на документацию
  • используйте одну из последних функций, называемую "вход". Вот описание из руководства " вход-это набор правила, позволяющие входящим соединениям достигать служб кластера. Он может быть настроен для предоставления службам внешних доступных URL-адресов, балансировки нагрузки трафика, завершения SSL, виртуального хостинга на основе имени и т. д.". Ссылка на документацию
  • Если kubernetes не предъявляет строгих требований и вы можете переключиться на последнюю версию openshift origin (которая называется "kubernetes на стероидах"), вы можете использовать функцию origin под названием "маршрутизатор".

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

.\minikube.exe ip

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

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

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

<Node-ip>:30000

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

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

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

Или Перечислите все:

  • api/v1/namespaces/default/services

Наконец, вы можете выбрать фиксированный порт узла в службе.yml

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

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

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

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

Comments

    Ничего не найдено.