Стадия жизненного цикла модуля: Preview
Доступно в редакциях: EE
Описание
Модуль sdn предоставляет функции программно-определяемых сетей в рамках DKP. В настоящее время он поддерживает следующие возможности:
- Управление конфигурацией сети на узлах.
- Дополнительные сети.
- IPAM для дополнительных сетей.
- Underlay-сети для проброса аппаратных устройств.
Управление конфигурацией сети на узлах
Модуль позволяет конфигурировать сетевые интерфейсы, используя декларативный 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: Внутрь пода прокидывается только линуксовый сетевой интерфейс как стандартное сетевое устройство ядра.
- VFIO-PCI: Явно подключает сетевое устройство в под, привязывая его к драйверу
Режимы работы
- Shared mode: Создает Virtual Functions (VF) из Physical Functions (PF) с использованием SR-IOV, позволяя нескольким подам совместно использовать одно и то же оборудование. Каждый под получает одну или несколько VF.
- Dedicated mode: Предоставляет каждый Physical Function как эксклюзивное устройство без SR-IOV. Каждый под получает эксклюзивный доступ к полному PF.
Автоматическая группировка интерфейсов
При включенном autoBonding контроллер группирует интерфейсы от нескольких совпавших PF в одно DRA устройство. Интерфейсы пробрасываются в под как отдельные сетевые интерфейсы, позволяя приложениям (например, DPDK) обрабатывать bonding/агрегацию на уровне приложения. Обратите внимание, что это не создает bonding-интерфейсы на уровне ядра внутри пода.