第 11 章 DPU Operator


11.1. DPU Operator

作为集群管理员,您可以将 DPU Operator 添加到集群中,以管理 DPU 设备和网络附加。

重要

DPU Operator 只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

11.1.1. 使用 DPU Operator 编排 DPU

您可以使用 Data Processing Unit (DPU) Operator 来管理从主机 CPU 中卸载网络、存储和安全工作负载的 DPU,以提高集群性能和效率。

DPU 是一个可编程的处理器类型,它代表了三个基础中的计算(computing),其它两个为 CPU 和 GPU。CPU 用于处理常规计算任务,GPU 可以加速特定的工作负载,但 DPU 的主要作业是卸载和加速以数据为中心的工作负载,如网络、存储和安全功能。

DPU 通常用于数据中心和云环境,它会从 CPU 卸载这些任务来提高性能、缩短延迟并增强安全性。DPU 也可用于通过使特殊工作负载部署更接近数据源,从而创建更高效且更灵活的基础架构。

DPU Operator 负责管理 DPU 设备和网络附加。DPU Operator 将 DPU 守护进程部署到通过 API 控制 DPU 守护进程在 DPU 上运行的 OpenShift Container Platform 计算节点上。DPU Operator 负责 ovn-kube 组件的生命周期管理,以及 DPU 上必要的主机网络初始化。

下表描述了当前支持的 DPU 设备。

Expand
表 11.1. 支持的设备
Vendor设备固件描述

Intel

IPU E2100

版本 2.0.0.11126 或更高版本

DPU 旨在从数据中心中的主机 CPU 中卸载网络、存储和安全任务,提高了效率和性能。有关部署完整的端到端解决方案的说明,请参阅红帽知识库解决方案使用 Intel E2100 IPU、DPU Operator 和 F5 NGINX 在 OpenShift 上加速机密 AI

Senao

SX904

35.23.47.0008 或更高版本

SmartNIC 旨在从数据中心和边缘计算环境中的主机 CPU 中卸载计算和网络服务,从而提高工作负载的效率并有效地隔离工作负载。

Marvell

Marvell Octeon 10 CN106

SDK12.25.01 或更高版本

旨在卸载需要从数据中心和边缘计算环境中主机 CPU 的高速度数据处理的工作负载,提高了性能和能源效率

注意

不支持 NVIDIA BlueField-3。

11.1.2. 安装 DPU Operator

您可以在主机和 DPU 集群上安装数据处理单元(DPU) Operator,以使用 CLI 或 Web 控制台管理设备生命周期和网络附加。

集群管理员可以使用 OpenShift Container Platform CLI 或 Web 控制台在主机集群中安装 DPU Operator,以及所有 DPU 集群。DPU Operator 管理所有支持的 DPU 的生命周期、DPU 设备和网络附加"。

注意

您需要在主机集群以及每个 DPU 集群中安装 DPU Operator。

11.1.2.1. 使用 CLI 安装 DPU Operator

您可以使用 CLI 安装 DPU Operator。在主机集群中设置 DPU 设备管理时,您可以使用 DPU Operator 来简化安装过程。

作为集群管理员,您可以使用 CLI 安装 DPU Operator。

注意

CLI 必须在 DPU 集群上安装 DPU Operator。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 具有 cluster-admin 特权的帐户。

流程

  1. 输入以下命令来创建 openshift-dpu-operator 命名空间:

    $ cat << EOF| oc create -f -
    apiVersion: v1
    kind: Namespace
    metadata:
      name: openshift-dpu-operator
      annotations:
        workload.openshift.io/allowed: management
    EOF
    Copy to Clipboard Toggle word wrap
  2. 输入以下命令来创建 OperatorGroup 自定义资源 (CR):

    $ cat << EOF| oc create -f -
    apiVersion: operators.coreos.com/v1
    kind: OperatorGroup
    metadata:
      name: dpu-operators
      namespace: openshift-dpu-operator
    spec:
      targetNamespaces:
      - openshift-dpu-operator
    EOF
    Copy to Clipboard Toggle word wrap
  3. 输入以下命令为 DPU Operator 创建 Subscription CR:

    $ cat << EOF| oc create -f -
    apiVersion: operators.coreos.com/v1alpha1
    kind: Subscription
    metadata:
      name: openshift-dpu-operator-subscription
      namespace: openshift-dpu-operator
    spec:
      channel: stable
      name: dpu-operator
      source: redhat-operators
      sourceNamespace: openshift-marketplace
    EOF
    Copy to Clipboard Toggle word wrap

验证

  1. 要验证是否已安装 Operator,请输入以下命令,然后检查 Operator 的输出显示 Succeeded

    $ oc get csv -n openshift-dpu-operator \
      -o custom-columns=Name:.metadata.name,Phase:.status.phase
    Copy to Clipboard Toggle word wrap
  2. 进入 openshift-dpu-operator 项目:

    $ oc project openshift-dpu-operator
    Copy to Clipboard Toggle word wrap
  3. 输入以下命令验证 DPU Operator 是否正在运行:

    $ oc get pods -n openshift-dpu-operator
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                               READY   STATUS    RESTARTS   AGE
    dpu-operator-controller-manager-6b7bbb5db8-7lvkj   2/2     Running   0          2m9s
    Copy to Clipboard Toggle word wrap

11.1.2.2. 使用 Web 控制台安装 DPU Operator

您可以使用 Web 控制台安装 DPU Operator。在主机集群中设置 DPU 设备管理时,您可以使用 DPU Operator 来简化安装过程。

作为集群管理员,您可以使用 Web 控制台安装 DPU Operator。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 具有 cluster-admin 特权的帐户。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点 Ecosystem Software Catalog
  2. 从可用的 Operator 列表中选择 DPU Operator,然后点 Install
  3. Install Operator 页中,在 Installed Namespace 下,默认预先选择 Operator recommended Namespace 选项。不需要操作。

    1. Install

验证

  1. 进入到 Ecosystem Installed Operators 页。
  2. 确保 openshift-dpu-operator 项目列出了 DPU OperatorStatusInstallSucceeded

    注意

    在安装过程中,Operator 可能会显示 Failed 状态。如果安装过程结束后有 InstallSucceeded 信息,您可以忽略这个 Failed 信息。

故障排除

  • 检查 Operator SubscriptionsInstall Plans 选项卡中的 Status 项中是否有任何错误。
  • 进入到 Workloads Pods 页,在 openshift-dpu-operator 项目中检查 pod 的日志。
  • 检查 YAML 文件的命名空间。如果缺少注解,您可以使用以下命令将注解 workload.openshift.io/allowed=management 添加到 Operator 命名空间中:

    $ oc annotate ns/openshift-dpu-operator workload.openshift.io/allowed=management
    Copy to Clipboard Toggle word wrap
    注意

    对于单节点 OpenShift 集群,命名空间需要注解 workload.openshift.io/allowed=management

11.1.3. 配置 DPU Operator

您可在安装后配置 DPU Operator,以便在双集群和单集群部署模式中启用管理 DPU 设备和网络附加。

您可以配置 DPU Operator 来管理集群中的 DPU 设备和网络附加。

要配置 DPU Operator,请按照以下步骤操作:

流程

  1. 根据您的部署模式创建 DpuOperatorConfig 自定义资源 (CR):

    • 双集群部署:您必须在主机 OpenShift Container Platform 集群上和每个红帽构建 MicroShift (MicroShift) DPU 集群上创建 DpuOperatorConfig CR。
    • 单集群部署:此部署使用标准的 OpenShift Container Platform 集群。您只需要在此集群中创建 DpuOperatorConfig CR 一次。

      所有集群的 CR 的内容都相同。

  2. 使用以下 YAML 创建名为 dpu-operator-config.yaml 的文件:

    apiVersion: config.openshift.io/v1
    kind: DpuOperatorConfig
    metadata:
     name: dpu-operator-config
    spec:
     logLevel: 0
    Copy to Clipboard Toggle word wrap
    • metadata.name :指定自定义资源的名称,它必须是 dpu-operator-config
    • spec.logLevel :在 operator 容器日志中设置所需的日志详细程度。值 0 是默认设置。
  3. 运行以下命令来创建资源:

    $ oc apply -f dpu-operator-config.yaml
    Copy to Clipboard Toggle word wrap
  4. 标记具有附加的 DPU 或作为 DPU 运行的所有节点。您可以运行以下命令来应用此标签:

    $ oc label node <node_name> dpu=true
    Copy to Clipboard Toggle word wrap

    其中:

    node_name

    引用节点的名称,如 worker-1

    注意

    部署与 DPU 兼容的集群的方法有两种:

    • 双集群部署:这由主机上运行的 OpenShift Container Platform 和 DPU 上运行的红帽 MicroShift (MicroShift) 组成。在这个模式中,红帽构建的 MicroShift (MicroShift) 实例还需要部署 DPU Operator,且您必须在节点上设置标签 dpu=true
    • 单集群部署:这仅包含在主机上运行的 OpenShift Container Platform,其中 DPUs 集成到主集群中。DPU 只需要为安装了 DPU 的主机节点以及 DPU 节点本身都需要标签 dpu=true。DPU Operator 会自动检测节点的角色,无论是作为 DPU 运行还是带有附加的 DPU 的主机。

11.1.4. 使用 DPU 在主机上运行工作负载

您可以使用 DPU 在主机上部署工作负载,以卸载专用的基础架构任务,并在释放主机 CPU 资源的同时提高性能。

在 DPU 上运行工作负载,可以将特定的基础架构任务卸载,如网络、安全性和存储到专用处理单元。这提高了性能,在基础架构和应用程序工作负载之间强制实施更强大的安全边界,并释放主机 CPU 资源。

按照以下步骤,使用 DPU 在主机上部署工作负载。这是在主机的 x86 CPU 上运行应用程序的标准部署模型,但会使用 DPU 进行网络加速和卸载。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 具有 cluster-admin 权限的帐户。
  • 已安装 DPU Operator。

流程

  1. 使用以下 YAML 创建用于在主机侧 worker 节点上运行的示例工作负载。将文件保存为 workload-host.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: my-pod
      namespace: default
      annotations:
        k8s.v1.cni.cncf.io/networks: default-sriov-net
    spec:
      nodeSelector:
        kubernetes.io/hostname: worker-237
      containers:
      - name: appcntr1
        image: registry.access.redhat.com/ubi9/ubi:latest
        command: ['/bin/sh', '-c', 'sleep infinity']
        imagePullPolicy: Always
        securityContext:
          priviledged: true
          runAsNonRoot: false
          runAsUser: 0
          seccompProfile:
            type: RuntimeDefault
        resources:
          requests:
            openshift.io/dpu: '1'
          limits:
            openshift.io/dpu: '1'
    Copy to Clipboard Toggle word wrap

    spec.nodeSelector :节点选择器使用 DPU 资源将 pod 调度到节点上。您可以将任何标准 Kubernetes 选择器用于此目的,如 kubernetes.io/hostname,将特定的节点作为目标,如示例 YAML 所示。

    注意

    对于灵活的调度,DPU Operator 会创建标签 dpu.config.openshift.io/dpuside: "dpu-host"。该标签可让默认调度程序将工作负载放在具有 DPU 的任何主机上。工作负载会自动加入 DPU 二级网络。当节点上的标签为 dpu.config.openshift.io/dpuside: "dpu" 时,这表示该节点是 DPU 本身。DPU Operator 会创建和管理 dpu.config.openshift.io/dpuside 标签。

  2. 运行以下命令来创建工作负载:

    $ oc apply -f workload-host.yaml
    Copy to Clipboard Toggle word wrap

11.1.5. 在 DPU 上运行工作负载

您可以直接在 DPU 上部署网络工作负载,以提高性能、增强安全隔离并减少主机 CPU 用量。

DPU 卸载网络工作负载,如安全功能或虚拟设备,以提高性能、增强安全隔离和释放主机 CPU 资源。

按照以下步骤,将简单的 pod 直接部署到 DPU 中。

先决条件

  • 安装 OpenShift CLI(oc)。
  • 具有 cluster-admin 特权的帐户。
  • 安装 DPU Operator。

流程

  1. 将以下 YAML 文件示例保存为 dpu-pod.yaml。这是 Kubernetes 默认调度程序直接调度到 DPU 节点的简单 pod 示例。

    apiVersion: v1
    kind: Pod
    metadata:
      name: "my-network-function"
      namespace: openshift-dpu-operator
      annotations:
        k8s.v1.cni.cncf.io/networks: dpunfcni-conf, dpunfcni-conf
    spec:
      nodeSelector:
        dpu.config.openshift.io/dpuside: "dpu"
      containers:
        - name: "my-network-function"
          image: "quay.io/example-org/my-network-function:latest"
          resources:
            requests:
              openshift.io/dpu: "2"
            limits:
              openshift.io/dpu: "2"
          securityContext:
            privileged: true
            capabilities:
              drop:
                - ALL
              add:
                - NET_RAW
                - NET_ADMIN
    Copy to Clipboard Toggle word wrap
    • metadata.name.annotations.k8s.v1.cni.cncf.io/networks: 值 dpunfcni-conf 指定 NetworkAttachmentDefinition 资源值。DPU Operator 在安装过程中创建此资源来配置 DPU 网络。
    • spec.nodeSelectornodeSelector 是调度此工作负载的主要机制。DPU Operator 创建和维护标签:dpu.config.openshift.io/dpuside: "dpu"。此标签可确保 pod 直接调度到 DPU 的处理单元。
    • spec.containers.name :容器的名称。
    • spec.containers.image :要拉取和运行的容器镜像。
  2. 运行以下命令来创建 pod:

    $ oc apply -f dpu-pod.yaml
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令验证 pod 状态:

    $ oc get pods -n openshift-dpu-operator
    Copy to Clipboard Toggle word wrap

    确保容器集的状态为 Running

11.1.6. 监控 DPU 的状态

您可以监控 DPU 基础架构状态,以检查集群中的 DPU 设备的当前状态和健康状况。

您可以监控 DPU 状态来查看 DPU 基础架构的当前状态。

oc get dpu 命令显示 DPU 基础架构的当前状态。按照以下步骤监控各种卡的状态。

先决条件

  • 已安装 OpenShift CLI (oc)。
  • 具有 cluster-admin 权限的帐户。
  • 已安装 DPU Operator。

流程

  1. 运行以下命令检查节点的整体健康状况:

    $ oc get nodes
    Copy to Clipboard Toggle word wrap

    示例输出提供了集群中所有节点的列表及其状态。在继续操作前,请确保所有节点都处于 Ready 状态。

    NAME                           STATUS   ROLES    AGE    VERSION
    ocpcluster-master-1            Ready    master   10d    v1.32.9
    ocpcluster-master-2            Ready    master   10d    v1.32.9
    ocpcluster-master-3            Ready    master   10d    v1.32.9
    ocpcluster-dpu-ipu-219         Ready    worker   42h    v1.32.9
    ocpcluster-dpu-marvell-41      Ready    worker   3d23h  v1.32.9
    ocpcluster-dpu-ptl-243         Ready    worker   3d23h  v1.32.9
    worker-host-ipu-219            Ready    worker   3d19h  v1.32.9
    worker-host-marvell-41         Ready    worker   4d     v1.32.9
    worker-host-ptl-243            Ready    worker   3d23h  v1.32.9
    Copy to Clipboard Toggle word wrap

    此输出显示三个 master 节点,以及由 worker-host 前缀标识的三个 worker 节点,如 worker-host-ipu-219。每个 worker 节点都包含由 ocpcluster-dpu 前缀标识的 DPU,例如 ocpcluster-dpu-ipu-219

  2. 运行以下命令报告 DPU 的状态:

    $ oc get dpu
    Copy to Clipboard Toggle word wrap

    示例输出提供了检测到的 DPU 列表。

    NAME                                 DPU PRODUCT                    DPU SIDE        MODE NAME               STATUS
    030001163eec00ff-host                Intel Netsec Accelerator       false           worker-host-ptl-243     True
    d4-e5-c9-00-ec-3v-dpu                Intel Netsec Accelerator       true            worker-dpu-ptl-243      True
    intel-ipu-0000-06-00.0-host          Intel IPU E2100                false           worker-host-ipu-219     False
    intel-ipu-dpu                        Intel IPU E2100                true            worker-dpu-ipu-219      False
    marvell-dpu-0000-87-00.0-host        Marvell DPU                    false           worker-host-marvell-41  True
    marvell-dpu-ipu                      Marvell DPU                    true            worker-dpu-marvell-41   True
    Copy to Clipboard Toggle word wrap
    • DPU PRODUCT :显示 DPU 厂商或类型,例如 Intel 或 Marvell。
    • DPU SIDE: 代表在主机侧运行(false) 或在 DPU 侧 (true) 运行。每个物理 DPU 都表示两次。
    • MODE NAME :DPU 所在的节点的名称。这是 false 条目的主机 worker 节点,以及 true 条目的 DPU 节点。
    • STATUS: 指示 DPU 在正常运行 (True) 或有问题 (False)。

      注意

      运行 oc get dpu -o yaml 以获取有关状态的更多详细信息。

11.1.7. 卸载 DPU Operator

当您不再需要 DPU 设备管理时,您可以从集群中卸载 DPU Operator,确保首先删除所有工作负载。

要卸载 DPU Operator,您必须首先删除任何正在运行的 DPU 工作负载。按照以下步骤卸载 DPU Operator。

先决条件

  • 可以使用具有 cluster-admin 权限的账户访问 OpenShift Container Platform 集群。
  • 已安装 DPU Operator。

流程

  1. 运行以下命令删除创建的 DpuOperatorConfig CR

    $ oc delete DpuOperatorConfig dpu-operator-config
    Copy to Clipboard Toggle word wrap
  2. 运行以下命令,删除用于安装 DPU Operator 的订阅:

    $ oc delete Subscription openshift-dpu-operator-subscription -n openshift-dpu-operator
    Copy to Clipboard Toggle word wrap
  3. 运行以下命令删除创建的 OperatorGroup 资源:

    $ oc delete OperatorGroup dpu-operators -n openshift-dpu-operator
    Copy to Clipboard Toggle word wrap
  4. 按如下方式卸载 DPU Operator:

    1. 运行以下命令检查已安装的 Operator:

      $ oc get csv -n openshift-dpu-operator
      Copy to Clipboard Toggle word wrap

      输出示例

      NAME                                DISPLAY        VERSION               REPLACES   PHASE
      dpu-operator.v4.20.0-202503130333   DPU Operator   4.20.0-202503130333              Failed
      Copy to Clipboard Toggle word wrap

    2. 运行以下命令来删除 DPU Operator:

      $ oc delete csv dpu-operator.v4.20.0-202503130333 -n openshift-dpu-operator
      Copy to Clipboard Toggle word wrap
  5. 运行以下命令,删除为 DPU Operator 创建的命名空间:

    $ oc delete namespace openshift-dpu-operator
    Copy to Clipboard Toggle word wrap

验证

  1. 运行以下命令验证 DPU Operator 是否已卸载。一个成功命令的输出示例是 No resources found in openshift-dpu-operator namespace

    $ oc get csv -n openshift-dpu-operator
    Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat