Доступно в редакциях:  EE

Стадия жизненного цикла модуля: Preview
У модуля есть требования для установки

Описание

Модуль sdn предоставляет функции программно-определяемых сетей в рамках DKP. В настоящее время он поддерживает следующие возможности:

Управление конфигурацией сети на узлах

Модуль позволяет конфигурировать сетевые интерфейсы, используя декларативный API.

Возможности модуля по настройке сетевых интерфейсов на узлах:

  • Агрегация портов.
  • Объединение сетевых интерфейсов в бридж.
  • Настройка VLAN-интерфейсов.

Дополнительные сети

Эта функция позволяет декларативно управлять дополнительными сетями для прикладных нагрузок (поды, виртуальные машины). При этом:

  • Каждая дополнительная сеть подразумевает единственный L2-домен обмена данными.
  • Внутри сетевого пространства пода дополнительная сеть представлена в виде tap-интерфейса.
  • В качестве технологии организации L2-сети в настоящее время поддерживаются следующие режимы:
    • Тегированный VLAN — для связи между подами на разных узлах сетевые пакеты помечаются соответствующим VLAN ID и используют инфраструктурное сетевое оборудование для коммутации. Данный метод позволяет создать 4096 дополнительных сетей в рамках одного кластера;
    • Прямой доступ в сетевой интерфейс на узлах — для связи между подами на разных узлах используются локальные сетевые интерфейсы на узлах.
  • С точки зрения управления сети бывают двух типов:
    • Кластерная — сеть, общедоступная в каждом проекте, управляется администратором. Пример — публичная WAN-сеть или shared-сеть обмена трафиком между проектами;
    • Сеть проекта — сеть, доступная в рамках неймспейса, управляется пользователем.

IPAM для дополнительных сетей

Механизм IPAM (IP Address Management) позволяет выделять IPv4-адреса из пулов и назначать их на дополнительные сетевые интерфейсы подов, подключаемых к кластерным сетям (ClusterNetwork) и сетям проекта (Network).

Для управления выделением адресов используются:

  • Пулы адресов: для кластерных сетей (ресурс ClusterIPAddressPool) или сетей проекта (ресурс IPAddressPool).
  • Параметры для включения IPAM для конкретной сети: Network.spec.ipam.ipAddressPoolRef — для сетей проекта, ClusterNetwork.spec.ipam.ipAddressPoolRef — для кластерных сетей.
  • Ресурс IPAddress — запрос (автоматический или статический) на выделение адреса, который затем назначается на интерфейс пода.

Практические шаги по выделению и назначению IPv4-адресов для дополнительных сетевых интерфейсов подов и примеры манифестов см. в Руководстве администратора и Руководстве пользователя.

Underlay-сети для проброса аппаратных устройств

Ресурс UnderlayNetwork обеспечивает прямое подключение физических сетевых интерфейсов (Physical Functions и Virtual Functions) к подам через Kubernetes Dynamic Resource Allocation (DRA). Эта функция предназначена для высокопроизводительных рабочих нагрузок, требующих прямого доступа к оборудованию, таких как приложения DPDK.

Основные возможности

  • Проброс аппаратных устройств: Физические сетевые интерфейсы (PF/VF) напрямую предоставляются подам, обходя сетевой стек ядра для максимальной производительности.
  • Настройка SR-IOV: Автоматическая настройка SR-IOV на выбранных Physical Functions для создания Virtual Functions, позволяя нескольким подам совместно использовать одно и то же оборудование.
  • Поддержка DPDK: Устройства могут быть привязаны в различных режимах, подходящих для рабочих нагрузок DPDK:
    • VFIO-PCI: Явно подключает сетевое устройство в под, привязывая его к драйверу vfio-pci. Внутрь пода монтируются соответствующие VFIO dev-устройства (например, /dev/vfio/vfio0) для доступа из пользовательского пространства.
    • DPDK: Универсальный режим, который автоматически выбирает подходящий драйвер для вендора сетевого адаптера. Для сетевых карт Mellanox устройство привязывается к драйверу mlx5_core с прокидыванием как netdev-интерфейса, так и необходимых dev-устройств (файлы InfiniBand verbs, /dev/net/tun, а также соответствующий sysfs-каталог). Для остальных вендоров устройство привязывается через VFIO (так же, как в режиме VFIO-PCI).
    • NetDev: Внутрь пода прокидывается только линуксовый сетевой интерфейс как стандартное сетевое устройство ядра.

Режимы работы

  • Shared mode: Создает Virtual Functions (VF) из Physical Functions (PF) с использованием SR-IOV, позволяя нескольким подам совместно использовать одно и то же оборудование. Каждый под получает одну или несколько VF.
  • Dedicated mode: Предоставляет каждый Physical Function как эксклюзивное устройство без SR-IOV. Каждый под получает эксклюзивный доступ к полному PF.

Автоматическая группировка интерфейсов

При включенном autoBonding контроллер группирует интерфейсы от нескольких совпавших PF в одно DRA устройство. Интерфейсы пробрасываются в под как отдельные сетевые интерфейсы, позволяя приложениям (например, DPDK) обрабатывать bonding/агрегацию на уровне приложения. Обратите внимание, что это не создает bonding-интерфейсы на уровне ядра внутри пода.

Системные сети (сервисные сети на узлах)

Ресурс SystemNetwork создает дополнительную сервисную сеть на узлах кластера поверх существующей underlay-сети. Системные сети предназначены для служебного трафика на уровне узлов (например, хранилище, управление), и не используются как дополнительные сети подов.

Принципы и особенности работы системных сетей:

  • Работа поверх underlay-сетей. Системная сеть подключается к underlay-сети (UnderlayNetwork). Для подключения в параметре spec.underlayNetworkName ресурса SystemNetwork указывается имя underlay-сети, к которой должна быть подключена системная сеть. Набор интерфейсов узла (PF или VF), которые будет использовать системная сеть, определяется в параметре memberNodeNetworkInterfaces объекта UnderlayNetwork.
  • Поддержка разных типов подключения системной сети к underlay-сети. Можно создавать VLAN-интерфейсы для подов (type: VLAN), использовать прямой доступ к интерфейсам на узлах, подключенным к underlay-сети (type: Access), или подключиться через SR-IOV виртуальную функцию (type: SRIOVVirtualFunction) с опциональной настройкой (MTU, MAC, spoof checking и т.д.).
  • Поддержка механизма IPAM. Опциональный параметр spec.ipam ссылается на ClusterIPAddressPool. Контроллер и агент выделяют адреса из этого пула и назначают их сетевым интерфейсам узла для данной системной сети.
  • Отслеживание статусов системных сетей. Агент отчитывается об адресах узла (включая IP-адреса системных сетей) в ресурсах NodeNetworkStatus. Внутренние ресурсы SystemNetworkNodeNetworkInterfaceAttachment отслеживают привязку каждой системной сети к родительскому интерфейсу на каждом узле.

Пошаговые инструкции см. в руководстве администратора.