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


Обзор MetalLB для кластеров Kubernetes

Применяется для: AKS на Azure Local

При настройке кластера 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) развёртывание компонента "speaker" осуществляется в виде демонсета.

Примечание.

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

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

  • В режиме ARP один из динамиков выбирается в качестве лидера. Затем он объявляет IP-адрес с помощью широковещательного сообщения ARP, привязывая IP-адрес к MAC-адресу узла, в котором он находится. Таким образом, весь трафик сначала попадает на один узел, а затем kube-proxy распределяет его равномерно ко всем серверным модулям pod службы.
  • В режиме BGP все узлы кластера устанавливают подключения ко всем одноранговым узлам BGP, созданным на вкладке "Одноранговые узлы BGP ". Как правило, одноранговый узел 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-адресов MetalLB должны находиться в той же подсети, что и узлы K8s. Пулы IP-адресов MetalLB могут находиться в сети, отличной от узлов 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.

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

Развертывание MetalLB с помощью портал Azure