Общие сведения о кластерах 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, который находится в любом узле в кластере.
- В режиме 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.