Доступ к кластеру 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 Услуги