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-чарта выполните следующие шаги:
Добавьте helm-чарт Network Operator:
helm repo add <repo-address> <chart-address>Примечание
Helm-чарт Network Operator не входит в состав текущей версии DropApp, для примера его можно скачать с официального сайта производителя.
Установите Network Operator со стандартными значениями параметров:
helm install <repo-address>/network-operator \ -n nvidia-network-operator \ --create-namespace \ --version <version> \ --set sriovNetworkOperator.enabled=true \ --waitЗапустите pod Network Operator:
kubectl -n nvidia-network-operator get pods
Для установки Network Operator с пользовательскими значениями параметров с помощью helm-чарта выполните следующие шаги:
Добавьте helm-чарт Network Operator:
helm repo add <repo-address> <chart-address>Примечание
Helm-чарт Network Operator не входит в состав текущей версии DropApp, для примера его можно скачать с официального сайта производителя.
Создайте файл
network-operator-values.yaml, содержащий значения по умолчанию:helm show values nvidia/network-operator --version <version> > network-operator-values.yamlСкорректируйте файл
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": [] } } ] }Установите Network Operator с пользовательскими значениями параметров:
helm install network-operator <repo-address>/network-operator \ -n nvidia-network-operator \ --create-namespace \ --version <version> \ -f ./network-operator-values.yaml \ --waitЗапустите 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 и связанная с ним конфигурация.
Примечание
Любое подсостояние может быть исключено, если оно не требуется для кластера.