Network Operator#

Network Operator - это сетевой оператор для управления сетевыми компонентами, который обеспечивает быструю работу сети, RDMA (Remote Direct Memory Access) и GPUDirect для рабочих нагрузок в кластере, упрощает выделение сетевых ресурсов в кластере и управление ими.

Он автоматически устанавливает необходимое программное обеспечение для сетевого доступа на хосте, объединяя все необходимые компоненты для высокоскоростного сетевого подключения - сетевой драйвер NVIDIA, плагины CNI, плагин для управления IP-адресами (IPAM) и другие.

Network Operator работает в сочетании с GPU Operator для обеспечения высокой пропускной способности и низкой задержки в сетях для кластеров GPU с расширяемыми вычислениями.

Основные функции:

  • Удаленный прямой доступ к памяти (RDMA) для передачи данных между модулями памяти в обход центрального процессора и сетевого стека ядра, поддерживающий протоколы InfiniBand и RDMA через конвергентный Ethernet (RoCE).

  • Виртуализация ввода-вывода на уровне Single Root (SR-IOV), позволяющая разделять сетевые интерфейсные карты на несколько виртуальных функций (Virtual Functions, VF) для обеспечения аппаратной изоляции и повышения производительности.

  • Поддержка нескольких типов вторичных сетевых интерфейсов, включая сети хост-устройств, MacVLAN, IP-сети через InfiniBand и сети SR-IOV для специализированных сетевых требований.

  • Автоматическое развертывание сетевых драйверов NVIDIA DOCA-OFED на узлах кластера и управление ими с помощью контроля версий и обновлений.

Установка Network Operator#

Для установки Network Operator со стандартными значениями параметров с помощью helm-чарта выполните следующие шаги:

  1. Добавьте helm-чарт Network Operator:

    helm repo add <repo-address> <chart-address>
    

    Примечание

    Helm-чарт Network Operator не входит в состав текущей версии DropApp, для примера его можно скачать с официального сайта производителя.

  2. Установите Network Operator со стандартными значениями параметров:

    helm install <repo-address>/network-operator \
      -n nvidia-network-operator \
      --create-namespace \
      --version <version> \
      --set sriovNetworkOperator.enabled=true \
      --wait
    
  3. Запустите pod Network Operator:

    kubectl -n nvidia-network-operator get pods
    

Для установки Network Operator с пользовательскими значениями параметров с помощью helm-чарта выполните следующие шаги:

  1. Добавьте helm-чарт Network Operator:

    helm repo add <repo-address> <chart-address>
    

    Примечание

    Helm-чарт Network Operator не входит в состав текущей версии DropApp, для примера его можно скачать с официального сайта производителя.

  2. Создайте файл network-operator-values.yaml, содержащий значения по умолчанию:

    helm show values nvidia/network-operator --version <version> > network-operator-values.yaml
    
  3. Скорректируйте файл network-operator-values.yaml в соответствии с потребностями пользователя:

    Пример пользовательских настроек параметров Network Operator
    apiVersion: mellanox.com/v1alpha1
     kind: NicClusterPolicy
     metadata:
       name: nic-cluster-policy
     spec:
       ofedDriver:
         image: doca-driver
         repository: <repo-address>/<chart-address>
         version: <version>
         forcePrecompiled: false
         imagePullSecrets: []
         terminationGracePeriodSeconds: 300
         startupProbe:
           initialDelaySeconds: 10
           periodSeconds: 20
         livenessProbe:
           initialDelaySeconds: 30
           periodSeconds: 30
         readinessProbe:
           initialDelaySeconds: 10
           periodSeconds: 30
         upgradePolicy:
           autoUpgrade: true
           maxParallelUpgrades: 1
           safeLoad: false
           drain:
             enable: true
             force: true
             podSelector: ""
             timeoutSeconds: 300
             deleteEmptyDir: true
       rdmaSharedDevicePlugin:
         image: k8s-rdma-shared-dev-plugin
         repository: <repo-address>/<chart-address>
         version: <version>
         imagePullSecrets: []
         config: |
           {
             "configList": [
               {
                 "resourceName": "rdma_shared_device_a",
                 "rdmaHcaMax": 63,
                 "selectors": {
                   "vendors": [],
                   "deviceIDs": [],
                   "drivers": [],
                   "ifNames": ["ens1f0"],
                   "linkTypes": []
                 }
               }
             ]
           }
    
  4. Установите Network Operator с пользовательскими значениями параметров:

    helm install network-operator <repo-address>/network-operator \
       -n nvidia-network-operator \
       --create-namespace \
       --version <version> \
       -f ./network-operator-values.yaml \
       --wait
    
  5. Запустите pod Network Operator:

    kubectl -n nvidia-network-operator get pods
    

Определение ресурсов#

Network Operator действует в соответствии с пользовательскими ресурсами NICClusterPolicy, определяющими подсостояние кластера для сетевых устройств.

Спецификация NICClusterPolicy включает в себя следующие поля (подсостояния):

  • ofedDriver - контейнер OFED-драйвера, который будет развернут на узлах поддержки.

  • rdmaSharedDevicePlugin - подключаемый модуль RDMA Shared Device Plugin для общего доступа к устройствам RDMA и связанные с ним конфигурации.

  • sriovDevicePlugin - подключаемый модуль сетевого устройства SR-IOV SR-IOV Network Device Plugin и связанные с ним конфигурации.

  • ibKubernetes - InfiniBand Kubernetes и связанные с ним конфигурации.

  • secondaryNetwork - компоненты для развертывания, упрощающие создание дополнительной сети в DropApp. Он состоит из опциональных компонентов:

    • Плагин CNI для поддержки дополнительных сетей Multus CNI.

    • Плагины для работы с контейнерными сетями.

    • Плагин IP Over Infiniband (IPoIB) CNI Plugin для создания дочерних ссылок IPoIB и перемещения их в pod.

  • nvIpam - Kubernetes IPAM и связанные с ним конфигурации.

  • nicConfigurationOperator - оператор настройки сетевой карты NIC Configuration Operator и связанная с ним конфигурация.

Примечание

Любое подсостояние может быть исключено, если оно не требуется для кластера.