Модуль подключения нескольких сетевых интерфейсов

Multus CNI

Модуль подключения нескольких сетевых интерфейсов к модулям в Kubernetes (Multus CNI) является мета-плагином, который вызывает работу других плагинов CNI, таких как Flannel, Weave, Calico, Cilium, Macvlan. С помощью модуля возможно создать под с несколькими сетевыми интерфейсами, например, eth0, net0, net1.

По умолчанию модуль не установлен в кластерах. Чтобы установить модуль, перейдите на страницу Доступные чарты раздела Сервисы и репозитории в графическом интерфейсе. На вкладке “shturval” найдите чарт shturval-metacni и нажмите “Установить”.

Выберите необходимую версию чарта. После выбора версии чарта в правой части экрана отобразятся доступные “Параметры конфигурации для сервиса” (values). Пропишите в блоке “Спецификация сервиса” необходимые параметры в качестве custom values.

Обратите внимание! Требуется установка модуля в неймспейс kube-system.

Если вы настраиваете сетевые интерфейсы в графическом интерфейсе платформы, то также в кластере должны быть установлены и включены:

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

Для организации мультисетей с разными IP-адресами или диапазонами адресов модуль (Multus CNI) интегрирован с модулем назначения IP-адресов на интерфейсах, созданных Multus (shturval-metacni-ipam), который необходимо установить в кластере. Подробнее как установить модуль назначения IP-адресов на интерфейсах.

Создание дополнительных интерфейсов

Чтобы создать дополнительный интерфейс для использования подами необходимо сконфигурировать пользовательский ресурс, который определяет конфигурацию CNI для интерфейсов. Таким ресурсом является NetworkAttachmentDefinition. Подробнее о ресурсе дополнительной сети NetworkAttachmentDefinition.

Созданные NetworkAttachmentDefinitions подключаются к поду в блоке annotations, с помощью параметра k8s.v1.cni.cncf.io/networks.

Пример пода с подключенными дополнительными интерфейсами, где macvlan-conf и name-conf названия NetworkAttachmentDefinitions:

apiVersion: v1
kind: Pod
metadata:
  name: podname
  annotations:
    k8s.v1.cni.cncf.io/networks: macvlan-conf, name-conf
spec:
  containers:
  - name: containername
    command: ["/bin/ash", "-c", "trap : TERM INT; sleep infinity & wait"]
    image: alpine