Доступ к кластеру kubernetes снаружи хост-машины через порт 80

Итак, вместо того, чтобы объяснять архитектуру, я рисую вам картину сегодня:) Я знаю, это 1/10.

Забыл нарисовать это, это кластер из одного узла

Надеюсь, это сэкономит вам время. Вероятно, также легче увидеть, где моя борьба, поскольку я разоблачаю недостаток понимания.

Итак, в двух словах:

Что работает:

  • Я могу свернуть каждый вход через виртуальные хосты изнутри сервера, используя curl -vH 'host: host.com' http://192.168.1.240/articleservice/system/ipaddr

  • Я могу получить доступ к серверу


Что не работает:

  • Я не могу получить доступ к кластеру извне.

Почему-то я не могу решить это сам, даже несмотря на то, что я много читал и мне очень помогли. Поскольку у меня есть проблемы с этим в течение некоторого периода времени, теперь откровенные ответы действительно приветствуются.

1 ответ

Как правило, вы не можете получить доступ к своему кластеру извне, не раскрывая службу. Вам следует изменить тип услуги "Ingress Controller" на NodePort и пусть kubernetes назначит порт этому сервису.
Вы можете увидеть порты, назначенные для службы, используя kubectl get service ServiceName,
Теперь можно получить доступ к этой услуге с внешней стороны на http://ServerIP:NodePort но если вам нужно использовать стандартные порты HTTP и HTTPS, вы должны использовать обратный прокси-сервер вне кластера для передачи трафика с порта 80 на NodePort назначен службе входного контроллера.
Если вы не любите добавлять обратный прокси, можно добавить externalIPs к службе контроллера Ingress, но таким образом вы теряете RemoteAddr в ваших конечных точках, и вы вместо этого получаете IP-адрес модуля входа контроллера.externalIPs может быть список ваших публичных IP-адресов

Вы можете найти полезную информацию об услугах и доступе по следующим ссылкам:
Kubernetes Услуги

Nginx Ingress - соображения относительно голого металла

Другие вопросы по тегам