Как я могу открыть сервис Kubernetes для интернета?
Я использую кластер kubernetes с 1 мастером (также узлом) и 2 узлами в Azure. Я использую Ubuntu с оверлейной сетью Flannel. Пока все работает хорошо. Единственная проблема, с которой я столкнулся, - это доступ к услуге в Интернете.
Я запускаю кластер в лазурной подсети. К мастеру подключена сетевая карта, которая имеет публичный IP. Это означает, что если я запускаю простой сервер, который прослушивает порт 80, я могу получить доступ к своему серверу, используя доменное имя (Azure дает возможность иметь доменное имя для публичного IP-адреса).
Я также могу получить доступ к интерфейсу сервиса гостевой книги kubernetes с помощью некоторого хака. Что я сделал, так это проверил все прослушивающие порты на главном и попробовал каждый порт с публичным IP. Мне удалось попасть в сервис kubernetes и получить ответ. Исходя из моего понимания, это идет непосредственно к модулю, который работает на главном сервере (который также является узлом), а не через IP-адрес службы (который будет иметь балансировку нагрузки для любого из модулей).
У меня вопрос, как мне сопоставить внешний IP с сервисным IP? Я знаю, что у kubernetes есть настройка, которая работает только на GCE (которую я сейчас не могу использовать). Но есть ли какой-нибудь аккуратный способ сказать etcd/flannel, чтобы сделать это?
1 ответ
Если вы используете kubectl expose
команда:
--external-ip = "": внешний IP-адрес, чтобы установить для службы. Служба может быть доступна по этому IP в дополнение к сгенерированному IP службы.
Или если вы создаете из json
или же yaml
файл, используйте spec/externalIPs
массив.