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