Создание пула внешних IP-адресов

Пул внешних IP-адресов — это набор IP-адресов, которые MetalLB использует для получения внешних IP-адресов доступа для внутренних маршрутов типа LoadBalancer.

Содержание

Предварительные требования

Если необходимо использовать пул внешних IP-адресов типа BGP, обратитесь к администратору для включения соответствующих функций.

Ограничения и условия

IP-ресурсы для внешнего адреса должны соответствовать следующим условиям:

  • Пул внешних адресов должен быть связан на уровне канального уровня (L2) с доступными узлами.

  • IP-адреса должны быть пригодны для использования платформой и не могут включать IP-адреса, уже используемые физической сетью, например, IP-адреса шлюзов.

  • Не должно быть пересечений с сетями, используемыми кластером, включая Cluster CIDR, Service CIDR, подсети и т. п.

  • В среде с двойным стеком необходимо, чтобы в одном пуле внешних адресов одновременно присутствовали как IPv4, так и IPv6 адреса, и их количество было больше 0. В противном случае внутренние маршруты типа LoadBalancer с двойным стеком не смогут получить внешние адреса доступа.

  • В среде IPv6 DNS узлов должен поддерживать IPv6, иначе плагин MetalLB не сможет быть успешно развернут.

Развертывание плагина MetalLB

Использование пула внешних адресов зависит от плагина MetalLB.

  1. Перейдите в Administrator.

  2. В левой навигационной панели выберите Marketplace > Cluster Plugin.

  3. Найдите MetalLB, нажмите на MetalLB справа от ⋮ > Deploy.

  4. Дождитесь, пока статус развертывания не изменится на Deployment Successful, чтобы завершить развертывание.

Пример ресурса custom resource (CR) IPAddressPool

# ippool-with-L2advertisement.yaml
kind: IPAddressPool
apiVersion: metallb.io/v1beta1
metadata:
  name: test-ippool
  namespace: metallb-system
spec:
  addresses:
    - 13.1.1.1/24
  avoidBuggyIPs: true
---
kind: L2Advertisement
apiVersion: metallb.io/v1beta1
metadata:
  name: test-ippool
  namespace: metallb-system
spec:
  ipAddressPools:
    - test-ippool
  nodeSelectors:
    - matchLabels: {}
      matchExpressions:
        - key: kubernetes.io/hostname
          operator: In
          values:
            - 192.168.66.210

Режим BGP:

# ippool-with-bgpadvertisement.yaml
kind: IPAddressPool
apiVersion: metallb.io/v1beta1
metadata:
  name: test-pool-bgp
  namespace: metallb-system
spec:
  addresses:
    - 4.4.4.3/23
  avoidBuggyIPs: true
---
kind: BGPAdvertisement
apiVersion: metallb.io/v1beta1
metadata:
  name: test-pool-bgp
  namespace: metallb-system
spec:
  ipAddressPools:
    - test-pool-bgp
  nodeSelectors:
    - matchLabels:
        alertmanager: "true"
  peers:
    - test-bgp-example
  1. Ссылка на пул IP-адресов.
INFO

Q: Что такое L2Advertisement?

A:

  1. L2Advertisement — это Custom Resource (CRD), предоставляемый MetalLB для управления тем, какие адреса из пула IP-адресов должны транслироваться через ARP (IPv4) или NDP (IPv6) в режиме канального уровня (Layer 2).

Q: Какова цель L2Advertisement?

A:

  1. Указать, какие IP-адреса из IPAddressPool должны транслироваться на уровне L2 (ARP/NDP объявления);

  2. Контролировать поведение трансляции, чтобы предотвратить конфликты IP или трансляцию между сегментами;

  3. Ограничивать область трансляции в средах с несколькими сетевыми интерфейсами и сетями.

Проще говоря, это говорит MetalLB, какие IP-адреса можно транслировать и кому (например, каким узлам).

Без определения L2Advertisement в режиме Layer2 MetalLB не будет транслировать никакие адреса.

Q: Что такое BGPAdvertisement в MetalLB?

A:

BGPAdvertisement — это Custom Resource Definition (CRD) Kubernetes, используемый в MetalLB, реализации балансировщика нагрузки для bare-metal Kubernetes кластеров. Он управляет тем, как диапазоны IP-адресов (определённые в IPAddressPool) анонсируются во внешние сети через BGP (Border Gateway Protocol).

Q: Почему BGPAdvertisement важен?

A:

В режиме BGP MetalLB контроллер устанавливает пиринг с внешними маршрутизаторами через BGP и анонсирует IP-адреса, назначенные объектам Kubernetes Service. Ресурс BGPAdvertisement позволяет:

  • Управлять тем, какие пулы адресов анонсируются

  • Настраивать параметры анонса маршрутов, такие как:

    • Агрегация маршрутов

    • BGP сообщества

    • Локальные предпочтения (приоритет BGP)

Без определения BGPAdvertisement MetalLB не будет анонсировать никакие адреса, даже если настроены BGP пиры.

Создание пула внешних IP-адресов через веб-консоль

  1. Перейдите в Administrator.

  2. В левой навигационной панели выберите Network Management > External IP Address Pool.

  3. Нажмите Create External IP Address Pool.

  4. Следуйте инструкциям для настройки параметров.

    ПараметрОписание
    Type
    • L2: Коммуникация и пересылка на основе MAC-адресов, подходит для небольших или локальных сетей, требующих простой и быстрой коммутации на уровне 2, с преимуществами в простоте настройки и низкой задержке.
    • BGP (Alpha): Маршрутизация и пересылка на основе IP-адресов, использующая протокол BGP для обмена маршрутной информацией, подходит для крупных сетей с необходимостью сложной маршрутизации между несколькими автономными системами, с преимуществами в высокой масштабируемости и надежности.
    IP ResourcesПоддерживается ввод в форматах CIDR и диапазона IP. Нажмите Add для добавления нескольких записей, примеры:
    CIDR: 192.168.1.1/24.
    Диапазон IP: 192.168.2.1 ~ 192.168.2.255.
    Available NodesВ режиме L2 доступные узлы — это те, которые несут весь трафик VIP; в режиме BGP — узлы, которые несут VIP, устанавливают BGP-соединения с пирами и анонсируют маршруты внешне.
    • Имя узла: выбор доступных узлов по имени.
    • Выбор по меткам: выбор доступных узлов по меткам.
    • Показать детали узлов: просмотр итогового списка доступных узлов.
    Примечание:
    • При использовании типа BGP доступные узлы — это узлы следующего хопа; убедитесь, что выбранные доступные узлы являются подмножеством BGP Connection Nodes.
    • Можно настроить либо выбор по меткам, либо по имени узла; если настроены оба варианта, итоговые доступные узлы — пересечение обоих.
    BGP PeersВыбор BGP пиров; подробности настройки см. в разделе BGP Peers.
  5. Нажмите Create.

Создание пула внешних IP-адресов через CLI

kubectl apply -f ippool-with-L2advertisement.yaml -f ippool-with-bgpadvertisement.yaml

Просмотр политики оповещений

  1. Перейдите в Administrator.

  2. В левой навигационной панели выберите Network Management > External IP Address Pool.

  3. Нажмите View Alarm Policy в правом верхнем углу страницы, чтобы просмотреть общую политику оповещений для MetalLB.