Внутренний балансировщик нагрузки GCP с входным контроллером ngnix в качестве порта узла: соединение отклонено

Предыстория: мы разместили приложение в кластере GKE, приложение, работающее в кластере GKE, имеет входной ресурс, содержащий правила, указывающие на наши сервисы приложений. Мы используем ingress-nginx в качестве входного контроллера для этого кластера.

Теперь мы создали GCP Internal Load Balancer(TCP), чтобы указать на порт узла, где прослушивает сервис ingress-controller. (Примечание: служба входящего контроллера nginx "имеет тип порта узла)

  1. Когда мы пытаемся получить доступ к приложению с http: // ILB-IP: 80 (http-порт), оно выдает исключение соединения, отклоненное, но получает желаемый ответ, когда мы обращаемся напрямую через нодпорт http: // ILB-IP: 31380 (нодпорт)

  2. Когда мы предоставляем входной сервис в качестве балансировщика нагрузки типа, GCP создает ILB в фоновом режиме. В этом случае приложение доступно через http-порт, и все запросы обслуживаются.

Может ли кто-нибудь помочь нам выяснить, когда мы явно создаем ILB и отправляем запрос, почему приложение недоступно, когда мы подключаемся к интерфейсу ILB через порт http, в то время как то же самое доступно, когда интерфейсом ILB является ILB-IP:?

Заранее спасибо!

1 ответ

Проверить это: https://medium.com/google-cloud/internal-load-balancing-for-kubernetes-services-on-google-cloud-f8aef11fb1c4

GCP начала поддерживать создание внутренней LB для сервисов K8S.

В ходе обсуждения с поддержкой Google стало известно, что тип службы как LoadBalancer создает запись IP-таблицы на каждом узле, которая позволяет перенаправлять трафик с порта 80 на порт определенного узла.

Итак, если наш сценарий использования требует явного создания ILB и чтобы наше приложение было доступно через порт узла, то "мы должны вручную редактировать таблицы IP на каждом узле kubernetes, чтобы трафик перенаправлялся с порта 80 на узел порт"

Входной контроллер должен быть настроен как тип:LoadBalancer, как описано в этой статье справочного центра, который создаст внешний LB для маршрутизации трафика к службам, предоставляемым через ресурс Ingress, что является ожидаемым способом сделать это.

При отображении входного контроллера как типа:NodePort, сервис доступен на IP каждого узла через статический порт, как описано здесь.