Почему порт узла не является LoadBalancer?

#kubernetes

#kubernetes

Вопрос:

Я прочитал много документов, которые NodePort не LoadBalancer являются. Но на практике это LoadBlance трафик между разными модулями в разных узлах, и поэтому мы можем называть это LoadBalancer . итак, почему мы не могли использовать NodePort as LoadBalancer ?

Ответ №1:

Службы типа LoadBalancer представляют собой комбинацию службы порта узла и облачного балансировщика нагрузки перед ним. Службы порта узла в большинстве случаев являются неполным решением, потому что не существует отличного способа доставлять пакеты от клиента туда, куда им нужно. Да, на каждом узле открыт порт, но как к нему привыкнуть? В некоторых случаях вы можете использовать порт узла и циклический подход DNS, но большинство протоколов не очень хорошо работают в этом режиме. Например, если один узел вышел из строя, он все еще может находиться в кэше DNS, поэтому клиенты обычно все равно пытаются связаться с ним, даже если другие узлы в записи DNS все еще работают. Кроме того, существуют ограничения протокола на количество IP-адресов, которые могут быть возвращены для одной записи. Тип LoadBalancer помещает один плавающий виртуальный IP (VIP) перед всеми этими портами узла, обычно через общедоступную облачную систему, такую как AWS CLBs или GCP TCP балансировщики нагрузки, но есть и более прямые инструменты, такие как MetalLB.

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

1. если я определю VIP с помощью keepalived и установлю этот IP в dns, у меня не возникнет проблем? могу ли я это сделать?

2. Это более или менее то, что делает MetalLB, за исключением того, что он более причудливый. Но, конечно, вы можете создать загрузочную версию, если хотите.

3. MetalLB имеет два режима. в каком режиме это сделать раньше меня? в L2 весь трафик направляется на один узел и после этого распределяется между другими. но я хочу сначала распределить его между всеми узлами

4. Это полностью зависит от специфики вашего варианта использования. Прочитайте документы и сравните с вашими средами.