два баланса нагрузки в kubernetes

#kubernetes

#kubernetes

Вопрос:

Как я могу видеть на диаграмме ниже, я выяснил, что в kubernetes у нас есть два балансировщика нагрузки. Один из них балансирует нагрузку между узлами, а другой — между модулями.

Если я использую их оба, у меня будет два балансировщика нагрузки.

Представьте, что какой-то пользователь хочет подключиться к 10.32.0.5 тому, кому kubernetes отправляет свой запрос node1(10.0.0.1) , а затем отправить запрос в pod (10.32.0.5) в nod3(10.0.0.3) , но это бесполезно, потому что лучший маршрут — отправить запрос nod3(10.0.0.3) напрямую.

Почему NodePort недостаточен для балансировки нагрузки?

Почему порт узла не является LoadBalancer?(это балансировка нагрузки между модулями в разных узлах, но зачем нам нужен другой балансировщик нагрузки?)

примечание: Я знаю, что если я использую NodePort и узел выходит из строя, это создает проблему, но я могу сказать, что я могу использовать keepalived для этого. Вопрос в том

зачем нам балансировка нагрузки между узлами? keepalived привлекает все запросы к одному IP. Почему у нас два балансировщика нагрузки?введите описание изображения здесь

Ответ №1:

Наличие у вас двух балансировщиков нагрузки зависит от ваших настроек.

В вашем примере у вас есть 3 модуля nginx и 1 служба nginx для доступа к модулям. Сервис создает уровень абстракции, поэтому вам не нужно знать, сколько существует модулей и какие у них IP-адреса. Вам просто нужно поговорить со службой, и она будет балансировать нагрузку на один из модулей (docs).

Теперь от ваших настроек зависит, как вы получаете доступ к сервису:

  • возможно, вы захотите опубликовать службу через NodePort. Затем вы можете напрямую получить доступ к сервису на узле.
  • вы также можете опубликовать его через LoadBalancer. Это дает вам еще один уровень абстракции, и вызывающему абоненту нужно меньше знать о фактической настройке вашего кластера.

Подробности см. в документах.

Комментарии:

1. почему мы используем два из них?

2. почему мы не можем использовать NodePort в качестве балансировщика нагрузки? я где-то читал, что NodePort не является loadbalancer