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

Описание

Модуль 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-интерфейсы на уровне ядра внутри пода.