Поделиться через


Общие сведения о кластерах MetalLB для Кластеров Kubernetes

Область применения: Локальная версия Azure, версия 23H2

При настройке кластера AKS Arc вам потребуется способ сделать службы доступными за пределами кластера. Тип LoadBalancer идеально подходит для этой специальных возможностей, но внешний IP-адрес остается ожидающей. Расширение Для MetalLB для Kubernetes с поддержкой Azure Arc — это средство, позволяющее создавать внешние IP-адреса для приложений и служб. Кластеры Kubernetes с поддержкой Arc могут интегрироваться с MetalLB с помощью расширения для MetalLB для Kubernetes с поддержкой Azure Arc.

Чтобы сделать службы доступными за пределами кластера, MetalLB требует IP-адресов. MetalLB заботится о назначении и освобождении этих адресов по мере необходимости при создании служб, но он распространяет только IP-адреса, которые находятся в настроенных пулах. Когда MetalLB назначает внешний IP-адрес службе, он сообщает сети за пределами кластера, что этот IP-адрес принадлежит кластеру. Это взаимодействие выполняется с помощью стандартных сетевых протоколов, таких как ARP или BGP.

  • Режим уровня 2 (ARP): в режиме уровня 2 один узел K8s в кластере владеет службой и использует стандартные протоколы обнаружения адресов (ARP для IPv4), чтобы сделать эти IP-адреса доступными в локальной сети. С точки зрения локальной сети объявляющий компьютер просто имеет несколько IP-адресов.
  • BGP. В режиме BGP все компьютеры в кластере устанавливают сеансы пиринга BGP с близлежащими маршрутизаторами, которыми вы управляете, и сообщают этим маршрутизаторам, как перенаправлять трафик в IP-адреса службы. Использование BGP обеспечивает истинную балансировку нагрузки между несколькими узлами и точное управление трафиком из-за механизмов политики BGP.

MetalLB имеет два компонента:

  • Контроллер: ответственный за выделение IP-адресов для каждой type=loadbalancerслужбы.
  • Докладчик: ответственный за рекламу IP-адреса с использованием ARP или BGP протоколом. Для удовлетворения требования высокого уровня доступности (HA) развертывание говорящего — это набор управляющей программы.

Примечание.

  • Модули pod динамиков используют сеть узлов; т. е. ip-адрес — это IP-адрес узла, чтобы они могли напрямую отправлять широковещательные сообщения через сетевой интерфейс узла.
  • Модуль pod контроллера — это обычный модуль pod, который находится в любом узле в кластере.

Архитектура MetalLB

  • В режиме ARP один из модулей pod динамиков выбирается в качестве лидера. Затем он объявляет IP-адрес с помощью широковещательного сообщения ARP, привязывая IP-адрес с MAC-адресом узла, в который он живет. Таким образом, весь трафик сначала попадает на один узел, а затем kube-proxy распределяет его равномерно ко всем серверным модулям pod службы.
  • В режиме BGP все узлы кластера устанавливают подключения ко всем одноранговым узлам BGP, созданным на вкладке BGP Peers . Как правило, одноранговый узел BGP является коммутатором TOR. Чтобы передавать сведения о маршрутизации BGP, одноранговые узлы BGP должны быть настроены таким образом, чтобы они распознали IP-адрес и ASN узлов кластера. При использовании BGP с ECMP (equal-Cost MultiPath) трафик равномерно достигается на всех узлах и, следовательно, обеспечивает истинную балансировку нагрузки.

Сравнение режимов MetalLB L2 (ARP) и BGP

Выбор между режимом L2 и BGP в MetalLB зависит от конкретных требований, сетевой инфраструктуры и сценариев развертывания:

Аспект MetalLB в режиме L2 (ARP) MetalLB в режиме BGP
Обзор В режиме уровня 2 один узел K8s берет на себя ответственность за рекламу службы в локальную сеть. С точки зрения сети узел K8s имеет несколько IP-адресов, назначенных сетевому интерфейсу. В режиме BGP каждый узел K8s в кластере устанавливает сеанс пиринга BGP с сетевыми маршрутизаторами и использует этот сеанс пиринга для объявления IP-адресов внешних служб кластера.
Назначение IP-адресов Пулы IP-адресов FxLB должны находиться в той же подсети, что и узлы K8s. Пулы IP-адресов FxLB могут находиться в другой сети, чем узлы K8s.
Сложность конфигурации Низкая. Так как вы предоставляете IP-адреса в той же сети, что и узлы Kubernetes, необходимо указать только ПУЛ IP CIDR или IP при настройке MetalLB. Высокая. При настройке BGP требуется знание протокола BGP и понимание сетевой инфраструктуры.
Масштабируемость Ограничено сетями уровня 2, подходящими для небольших и средних развертываний K8s. Подходит для сложных топологий сети и крупномасштабных развертываний K8s.
Совместимость с сетью инфраструктуры Работает с любой сетью, но может привести к наводнению ARP в больших кластерах K8s, так как один IP-адрес используется для всех служб, а пропускная способность входящего трафика службы ограничена пропускной способностью одного узла. Требуется поддержка BGP в сетевой инфраструктуре.
Проектирование трафика Ограниченный контроль над маршрутизацией трафика. Точное управление маршрутизацией трафика с помощью атрибутов BGP.
Внешнее подключение Требуется дополнительная конфигурация внешнего подключения. Обеспечивает простое подключение с внешними сетями с помощью маршрутизации BGP.

Вопросы и ответы

Можно ли повторно использовать экземпляр MetalLB в кластерах AKS Arc?

Нет, MetalLB нельзя повторно использовать в кластерах AKS Arc. MetalLB живет как модули pod в кластере Kubernetes, а подсистемы балансировки нагрузки — это пользовательские ресурсы (CR). Необходимо установить расширение MetalLB Arc k8s с помощью Azure CLI, шаблонов портал Azure или Azure Resource Manager и создать подсистемы балансировки нагрузки для каждого кластера AKS Arc.

Следующие шаги