网络

使用新的 NVIDIA 网络运营商 1.0 在横向扩展 GPU 集群中优化 Kubernetes 网络

GPU 加速计算在云计算、企业计算和边缘计算领域的日益普及,越来越依赖于强健而强大的网络基础设施。 NVIDIA ConnectX SmartNICs 和 NVIDIA BlueField DPU 提供了高吞吐量、低延迟的连接,使 GPU 资源能够跨节点群扩展。为了满足对云本地 AI 工作负载的需求, NVIDIA 提供了 GPU 运营商,旨在简化 Kubernetes 上的横向扩展 GPU 部署和管理。

今天, NVIDIA 宣布了 NVIDIA 网络运营商的 1 . 0 版本。作为 NVIDIA GPU 运算符 的一个模拟,网络运营商通过自动化网络部署和配置的各个方面简化了 Kubernetes 的扩展网络设计,否则就需要手工操作。它在具有 NVIDIA 网络接口的任何集群节点上加载所需的驱动程序、库、设备插件和 CNI 。

与 GPU 运营商配合,网络运营商启用了 GPU 直接 RDMA ,这是一项关键技术,可将云本地 AI 工作负载加速几个数量级。该技术在 NVIDIA GPU 之间提供了高效的零拷贝数据传输,同时利用了 SmartNICs 和 DPU 中的硬件引擎。图 1 显示了两个 GPU 节点之间的 GPU 直接 RDMA 技术。节点 1 上的 GPU 通过网络直接与节点 2 上的 GPU 通信,绕过 CPU 设备。

Two GPU nodes communicate over the networking using GPUDirect RDMA t technology, that allows GPU on Node1 read/write data from/to the GPU memory of Node B, while bypassing the CPU devices
图 1 . GPU 两个 GPU 节点之间的直接 RDMA 技术

NGC 网络运营商现在可在 NGC 和 NVIDIA 上使用 Kubernetes 自定义资源 ( CRD )和 操作员框架 来提供实现加速联网所需的主机软件。这篇文章讨论了网络运营商内部的内容,包括它的特性和功能。

易于部署和操作的 Kubernetes 网络

网络运营商致力于使 Kubernetes 网络变得简单和轻松。它是 Apache2 . 0 许可下的一个开源软件项目。 1 . 0 版本针对运行在裸机服务器基础设施和 Linux 虚拟化环境中的 Kubernetes 进行了验证。以下是 1 . 0 版的主要功能:

  • 在裸机 Kubernetes 环境中自动部署主机软件组件,以实现以下功能:
    • macvlan 辅助网络
    • SR-IOV 二次网络(分配给 pod 的 VF )
    • 主机设备辅助网络(分配给 pod 的 PF )
    • GPU 直接 RoCE (使用 NVIDIA GPU 运算符)
  • 在嵌套的 Kubernetes 环境(在 Linux VMs 中运行的 Kubernetes Pods )中自动部署主机软件组件,以创建以下内容:
    • SR-IOV 二级网络(分配给 VM 的 VF 的#个,并通过不同的 POD )
    • 主机设备辅助网络(分配给 Pod 的 PF )
    • GPU 直接 RoCE (使用 NVIDIA GPU 运算符)
  • 平台支持:
    • Kubernetes v1 . 17 或更高版本
    • 容器运行时: Containerd
    • 裸机主机操作系统/ Linux 来宾操作系统: Ubuntu 20 . 04
    • Linux KVM 虚拟化
  • 舵图安装

虽然启用了 GPU 的节点是一个主要用例,但是网络运营商对于启用独立于 NVIDIA GPU 的加速 Kubernetes 网络环境也很有用。一些示例包括设置 SR-IOV 网络和 DPDK 以加速电信 NFV 应用程序、建立 RDMA 连接以快速访问 NVMe 存储等等。

NVIDIA 网络运营商内部

网络运营商被设计成一个 Kubernetes 运营商,它利用多个定制资源为一个节点添加加速的网络功能。 1 . 0 版本支持多种网络模型,可适应各种 Kubernetes 网络环境和不同的应用程序需求。如今,网络运营商只为二级网络配置 RoCE 。这意味着主吊舱网络保持不变。将来的工作可能会允许为主网络配置 RoCE 。

以下各节介绍网络运营商打包和使用的不同组件。

节点功能发现

节点功能发现 ( NFD )是一个 Kubernetes 插件,用于检测硬件特性和系统配置。网络运营商使用 NFD 来检测安装了 NVIDIA SmartNICs 和 GPU 的节点,并将它们标记为这样的节点。基于这些标签,网络运营商安排适当的软件资源。

CNI 木耳

 Multus CNI 是 Kubernetes 的容器网络接口( CNI )插件,支持将多个网络接口连接到 pod 。通常在库伯内特斯,每个吊舱只有一个网络接口。使用 Multus ,您可以创建具有多个接口的多宿主 Pod 。 Multus 充当一个 meta-plugin ,一个可以调用多个其他 CNI 插件的 CNI 插件。 NVIDIA 网络运营商安装 Multus ,将用于高速 GPU – GPU 通信的二级网络添加到集装箱吊舱中。

NVIDIA OFED 驱动器

NVIDIA OpenFabrics 企业分销( OFED ) 网络库和驱动程序由 节点标签 网络团队打包和测试。 NVIDIA OFED 通过 Infiniband 和以太网互连支持 远程直接内存访问 ( RDMA )。网络运营商使用 NVIDIA 将预编译的 NVIDIA OFED 驱动程序容器部署到每个 Kubernetes 主机上。容器在启动或停止时加载和卸载 NVIDIA OFED 驱动程序。

NVIDIA 对等内存驱动程序

NVIDIA 对等内存驱动程序 是一个客户端,它与网络驱动程序交互,以在 GPU 和主机内存之间提供 RDMA 。网络运营商在同时具有 ConnectX 适配器和 NVIDIA GPU 的节点上安装 NVIDIA 对等内存驱动程序。当容器启动和停止时,此驱动程序也会自动加载和卸载。

RDMA 共享设备插件

Kubernetes 设备插件框架 向 Kubernetes 节点上运行的 Kubelet 代理播发系统硬件资源。网络运营商部署 RDMA 共享设备插件 向 Kubelet 播发 RDMA 资源,并向节点上运行的 pod 公开 RDMA 设备。它允许吊舱执行 RDMA 操作。节点上运行的所有 pod 共享对相同 RDMA 设备文件的访问。

容器网络 CNI 插件

Macvlan CNI 公司主机设备 CNI 是在 CNI 项目下托管的通用容器网络插件。 macvlan CNI 创建一个新的 MAC 地址,并将所有通信转发到容器。主机设备 CNI 将已经存在的设备移动到容器中。网络运营商使用这些 CNI 插件创建 macvlan 网络,并将 NIC 物理功能分别分配给容器或虚拟机。

SR-IOV 设备插件和 CNI

SR-IOV 是一种在虚拟机或容器吊舱与 NIC 硬件之间提供直接接口的技术。它绕过了主机 CPU 和操作系统,从 I / O 任务中释放出昂贵的 CPU 资源,并大大加快了连接速度。 SR-IOV 设备插件CNI 插件 启用 Kubernetes 节点上可用的 SR-IOV 虚拟功能( VF )。这两者都是网络运营商创建 SR-IOV VF 并将其分配给处理 GPU -to- GPU 通信的二级网络所必需的。

SR-IOV 操作员

SR-IOV 操作符旨在帮助用户在集群中提供和配置 SR-IOV 设备插件和 SR-IOV CNI 插件。网络运营商使用 SR-IOV 操作员 在 Kubernetes 集群中部署和管理 SR-IOV 。

Whereabouts CNI

Whereabouts CNI 是一个 IP 地址管理( IPAM ) CNI 插件,可以在 Kubernetes 集群中分配 IP 地址。网络运营商使用此 CNI 为承载 GPU -to- GPU 通信的二级网络分配 IP 地址。

更好的结合: NVIDIA 加速计算和网络

图 2 显示了网络运营商如何与 GPU 运营商协同工作来部署和管理主机网络软件。

The Network Operator and GPU Operators are installed side by side on a Kubernetes node, powered by the NVIDIA EGX software stack and NVIDIA-certified server hardware platform.
图 2 .网络运营商与 NVIDIA GPU 运营商一起安装,以在 EGX 堆栈上自动化 GPU 直接 RDMA 配置

以下部分描述了支持的网络模型和相应的主机软件组件。

RoCE 共享模式

共享模式意味着在节点上的多个容器 pod 之间共享单个 IB 设备的方法。此网络模型针对需要高性能网络的企业和边缘环境进行了优化,无需多租户。网络运营商安装以下软件组件:

  • Multus CNI
  • RoCE 共享模式设备插件
  • Macvlan CNI
  • Whereabouts IPAM CNI

网络运营商还在 GPU 节点上安装 NVIDIA OFED 驱动程序和 NVIDIA 对等内存。

SR-IOV 、 RoCE 和 DPDK 网络

如前所述, SR-IOV 是一种提供对 NIC 硬件的直接访问的加速技术。此网络模型针对运行在裸机上的多租户 Kubernetes 环境进行了优化。网络运营商安装以下软件组件:

  • Multus CNI 
  • SR-IOV 设备插件
  • SR-IOV CN
  • Whereabouts IPAM CNI

网络运营商还在 GPU 节点上安装 NVIDIA OFED 驱动程序和 NVIDIA 对等内存。

NIC PF 直通

这种网络模式适合要求极高的应用。网络运营商可以将 NIC 物理功能分配给 Pod ,以便 Pod 充分利用它。网络运营商安装以下主机软件组件:

  • Multus CNI
  • SR-IOV 设备插件
  • 主机开发 CNI
  • Whereabouts IPAM CNI

网络运营商还在 GPU 节点上安装 NVIDIA OFED 驱动程序和 NVIDIA 对等内存。

为横向扩展 GPU 集群优化 Kubernetes 网络

NVIDIA GPU 和网络运营商都是 NVIDIA EGX 企业平台的一部分,该平台允许 GPU 加速计算与传统企业应用程序在同一 IT 基础设施上协同工作。总而言之,运营商使 NVIDIA GPU 成为库伯内特斯的一等公民。现在发布用于生产环境,网络运营商简化了 Kubernetes 网络,带来了必要的简单性和可扩展性级别,以便在企业中实现扩展培训和边缘推断。

有关更多信息,请参阅 网络运营商文档 。您还可以下载 NGC 网络运营商 来查看它的运行情况,并在 network-operator GitHub repo 中加入开发人员社区。

 

Tags