Балансировка нагрузки Kubernetes не работает для нескольких модулей в одном узле - PullRequest
0 голосов
/ 14 января 2020

Позвольте мне попытаться объяснить это как можно лучше:

  1. Использование только 1 узла (кластеризация с одним узлом)
  2. 3 модуля (модуль A, модуль B, модуль *) 1024 *) того же приложения в этом узле. Это приложение производителя, которое не является приложением покоя. Они java приложение. Приложение в этих модулях откроет порт прослушивателя TCP 8888. Таким образом, для каждого модуля A, Pod B, Pod C порт 8888 открыт для прослушивания. Все эти модули помечены как AB C.
  3. Создан сервис NodePort NP1:
    Порт: 2222
    NodePort: 3333
    TargetPort: 8888 -> это нацелено на вышеупомянутого слушателя Pods
    :
    селектор:
    метки: AB C
  4. Другое приложение (APP1) подключается к службе NP1 (TCP), подключается к NodePort 3333 и отправляет полезную нагрузку этим 3 модулям.
  5. Поступает полезная нагрузка, но она поступает только на модуль A. Он не распространяется на другие 2 модуля.
  6. Я понимаю, что таблицы IP используются для распределения трафика c. Я заметил, что когда протокол HTTP, тогда полезная нагрузка распределяется на все 3 модуля. Но когда это TCP, он все время распространяется только на 1 Pod.

Любая помощь или понимание было бы здорово.

1 Ответ

0 голосов
/ 14 января 2020

Когда вы помещаете балансировочный груз перед этими 3-мя модулями и делаете запросы к нему, он будет go на любом из этих 3-х модулей, а не на всех 3-х из них одновременно. То, что вы ищете, это безголовый сервис, который возвращает все ips связанных модулей для работы. Дальнейшее объяснение в этой статье: https://dev.to/kaoskater08/building-a-headless-service-in-kubernetes-3bk8 надеюсь, что это поможет.

...