Дополнительные сети
На этой странице
Обзор
Дополнительные сети позволяют использовать пользовательские сети в дополнение к основному CNI Cilium. Для SR-IOV используются ресурсы SriovNetworkNodePolicy и SriovNetwork; для пользовательских сетей при установленном модуле shturval-metacni используется NetworkAttachmentDefinition.
SR-IOV
SR-IOV позволяет подключать контейнеры непосредственно к сетевому оборудованию. Ресурсы SriovNetworkNodePolicy и SriovNetwork связаны между собой и вместе обеспечивают управление сетевыми настройками SR-IOV на уровне узла.
Все ресурсы SR-IOV должны находиться в том же неймспейсе, где установлен SRIOV-Operator. В интерфейсе для этих ресурсов автоматически применяется неймспейс kube-system.
Настройка выполняется в таком порядке:
- Создайте
SriovNetworkNodePolicy: она определяет, какие узлы и сетевые карты охватываются политикой SR-IOV. - Создайте
SriovNetwork: она создаёт сеть для SR-IOV-совместимой сетевой карты и связывается с политикой черезResourceName. - Проверьте созданные ресурсы.
Создание SriovNetworkNodePolicy
- Откройте страницу SriovNetworkNodePolicy в разделе Сети.
- Нажмите + Добавить SriovNetworkNodePolicy.
- Заполните параметры политики:
- Название — имя ресурса.
- ResourceName — имя ресурса, которое связывает
SriovNetworkNodePolicyсSriovNetwork. - Селектор узлов — лейблы узлов, на которые распространяется политика. Селектор лейблов работает по принципу объединения: у выбираемого объекта должны быть все указанные лейблы.
- Приоритет — порядок применения политики, если для узла подходит несколько политик.
- deviceTypes — тип драйвера для создаваемых VF:
netdeviceдля драйвера в ядре Linux илиvfio-pciдля DPDK. - mtu — значение MTU для устройств.
- nicSelector — фильтры для выбора NIC. Можно использовать подмножества на основе Vendor ID, Device ID, Root Device ID и имена PfNames.
- numVfs — количество виртуальных функций, которое должно быть настроено на каждом NIC.
- linkType — тип сетевого соединения:
Ethдля Ethernet илиIBдля InfiniBand. - eSwitchMode — режим работы виртуального коммутатора:
legacyилиswitchdev. - isRdma — признак поддержки RDMA.
- При необходимости задайте лейблы и аннотации.
- Сохраните ресурс. Созданная политика появится в списке элементов.
Скриншот: SriovNetworkNodePolicy

Скриншот: nicSelector

Создание SriovNetwork
Перед созданием SriovNetwork должен быть создан ресурс SriovNetworkNodePolicy.
- Откройте страницу SriovNetworks в разделе Сети.
- Нажмите + Добавить SriovNetwork.
- Заполните параметры сети:
- Название — имя ресурса.
- ResourceName — значение, которое соответствует
ResourceNameсетевой политикиSriovNetworkNodePolicy. - Спецификация IPAM — параметры управления IP-адресами в формате JSON.
- Спецификация capabilities — возможности SR-IOV в формате JSON.
- vlan — опциональный идентификатор VLAN.
- spoofChk — параметр для включения или отключения проверки поддельности.
- Включить режим доверия VF — опциональный параметр, который указывает, должен ли VF доверять пакетам с потенциально вредоносным содержимым.
- maxTxRate и minTxRate — максимальная и минимальная TX-скорость в мегабитах в секунду. Допускается ограничивать только одно из значений.
- linkState — состояние связи VF:
auto,enableилиdisable. - networkNamespace — неймспейс, в котором будет создана сеть.
- vlanQoS — уровень обслуживания сетевого трафика внутри VLAN.
- При необходимости задайте лейблы.
- Сохраните ресурс. Созданная сеть появится в списке элементов.
Скриншот: SriovNetworks

Значения linkState:
auto— состояние связи определяется драйвером сетевого интерфейса. Это значение по умолчанию.enable— VF всегда включён, даже если PF не подключён к сети. При этом доступен исходящий трафик, инициализированный с VF, но входящий трафик от PF недоступен.disable— VF всегда выключен, независимо от состояния PF.
Значения vlanQoS:
0—best effort: сетевые пакеты обрабатываются на равных условиях без предпочтений или приоритетов.1-7— CoS по стандарту 802.1p. Значения определяют приоритеты обработки пакетов в зависимости от значимости или типа трафика.-1— настройка по умолчанию или отсутствие явной настройки VLAN QoS для данного VF.
Пример IPAM для SriovNetwork
IPAM используется для управления и выделения IP-адресов. Тип whereabouts означает динамическое управление диапазонами IP-адресов и их назначение контейнерам. Тип static означает статическое управление адресами: адреса назначаются вручную, а механизмы автоматического назначения и управления адресами отключены.
{
"spec": {
"ipam": {
"type": "static",
"subnet": "10.56.217.0/24",
"rangeStart": "10.56.217.171",
"rangeEnd": "10.56.217.181",
"routes": [{"dst": "0.0.0.0/0"}],
"gateway": "10.56.217.1"
}
Пример capabilities для SriovNetwork
В capabilities задаются возможности SR-IOV. В примере mac указывает, что SR-IOV-интерфейс может иметь собственный MAC-адрес, а ips — что SR-IOV-интерфейс может иметь собственный IP-адрес.
{
"mac": true,
"ips": true
}
Проверка ресурсов SR-IOV
После создания ресурсов проверьте, что они появились в кластере:
kubectl get sriovnetworknodepolicies -n kube-system
kubectl get sriovnetworks -n kube-system
NetworkAttachmentDefinitions
Ресурс NetworkAttachmentDefinition позволяет использовать пользовательские сети в дополнение к основному CNI Cilium при установленном модуле shturval-metacni.
NetworkAttachmentDefinition создаётся автоматически при создании SriovNetwork. Для созданного NetworkAttachmentDefinition можно изменять только лейблы и аннотации. Чтобы изменить саму спецификацию, измените сетевую политику SriovNetworkNodePolicy.
Создание NetworkAttachmentDefinition
- Откройте страницу NetworkAttachmentDefinitions в разделе Сети.
- Нажмите + Добавить NetworkAttachmentDefinition.
- Укажите название ресурса.
- Выберите неймспейс, в котором ресурс будет использован.
- При необходимости задайте лейблы и аннотации.
- В блоке Спецификация укажите конфигурацию пользовательского ресурса в формате JSON.
- Сохраните ресурс. Созданный
NetworkAttachmentDefinitionпоявится в списке элементов.
Скриншот: NetworkAttachmentDefinitions

Пример спецификации NetworkAttachmentDefinition
config: '{
"cniVersion": "0.3.1",
"name": "my-multus-network",
"type": "macvlan",
"master": "eth0",
"mode": "bridge",
"ipam": {
"type": "host-local",
"subnet": "192.168.1.0/24",
"rangeStart": "192.168.1.200",
"rangeEnd": "192.168.1.216",
"routes": [{ "dst": "0.0.0.0/0" }],
"gateway": "192.168.1.1"
}
}'
Описание полей спецификации:
- cniVersion — версия CNI.
- name — имя сети.
- type — тип сетевого интерфейса, например
macvlan. - master — название основного сетевого интерфейса на узле Kubernetes.
- mode — режим работы.
- ipam — параметры управления IP-адресами:
- type — тип IPAM.
- subnet — сеть, в которой будут распределяться IP-адреса.
- rangeStart и rangeEnd — диапазон, в который будут распределяться IP-адреса.
- routes — маршруты для сети.
- gateway — шлюз для сети.
Проверка NetworkAttachmentDefinition
После создания ресурса проверьте его наличие:
kubectl get network-attachment-definitions -A
kubectl get network-attachment-definitions <имя> -n <неймспейс> -o yaml