Как предоставить сервис Kubernetes для AWS, используя `service.spe c .externalIPs`, а не` --type = LoadBalancer`? - PullRequest
0 голосов
/ 19 марта 2020

Я развернул кластер Kubernetes на AWS, используя kops, и я могу выставлять свои модули, используя службу с --type=LoadBalancer:

kubectl run sample-nginx --image=nginx --replicas=2 --port=80
kubectl expose deployment sample-nginx --port=80 --type=LoadBalancer

Однако я не могу получить его чтобы работать, указав service.spec.externalIPs с publi c IP моего главного узла.

Я разрешил входящий трафик c указанный порт и использовал https://kubernetes.io/docs/concepts/services-networking/service/#external -ips в качестве документации.

Может кто-нибудь уточнить, как открыть службу на AWS без использования собственного балансировщика нагрузки облачного провайдера?

1 Ответ

0 голосов
/ 23 марта 2020

Если вы хотите избежать использования Loadbalancer, тогда вы используете тип услуги NodePort.

NodePort предоставляет службу для каждого IP-узла в порту stati c (NodePort). ClusterIP сервис, вдоль которого создается NodePort сервисный маршрут. Вы сможете получить доступ к услуге NodePort извне, запросив:

<NodeIP>:<NodePort> 

Это означает, что если вы получите доступ к любому узлу с этим портом, вы сможете получить доступ к вашей службе. Стоит помнить, что NodePorts - это порты с высоким номером (30 000 - 32767)

Возвращаясь конкретно к AWS, вот их официальный документ о том, как предоставлять сервисы вместе с объясненным NodePort.

Обратите внимание на очень важную информацию о включении портов:

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

Дайте мне знать, если это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...