NVIDIA GPU 示例

Hopper、Blackwell 与 RTX Pro 6000 BSE 的单 GPU 示例; Blackwell 与 Hopper 的多 GPU 示例;Hopper PPCIE 节点标签说明

说明: 本文为英文文档的中文译版,英文原版请参见 NVIDIA GPU examples。

本文展示如何在 Pod 中配置 NVIDIA 设备直通。

配置前提是你已经按照 NVIDIA Confidential Containers Reference Architecture 部署了 CoCo,并且所用组件版本与下文的直通模式相匹配。若你想看一个把 GPU runtime class、Trustee/KBS、sealed secret、guest pull 和与之对应生成的 agent policy 串成完整 NIM 场景,可参考 带 GPU 远程证明的 NVIDIA NIM 部署场景。

简要说明如下:NVIDIA Hopper、NVIDIA Blackwell 和 NVIDIA RTX Pro 6000 都支持单 GPU 直通(SPT)。Hopper 和 Blackwell 另外支持多 GPU 场景( PPCIE 和 MPT )。Protected PCIe(PPCIE)只用于 Hopper 多 GPU,并且要求 NVLink switch 进入 PPCIE 模式,注意这里 CoCo 会帮你实现。多 GPU 直通(Multi-GPU Passthrough, MPT)用于 Blackwell GPU 之间的端到端加密。NVIDIA RTX Pro 不支持多 GPU 配置。下面分别给出各场景下 Pod 的配置。

1. Hopper、Blackwell 或 RTX Pro 6000 BSE:单 GPU 直通(SPT)

在默认的 Confidential Containers / GPU Operator 配置下(on),不需要修改 nvidia.com/cc.mode。

下面的 Pod 示例会在 Hopper、Blackwell 或 RTX Pro 6000 BSE 上申请 1 张 GPU:

apiVersion: v1
kind: Pod
metadata:
  name: cuda-vectoradd-kata
  namespace: default
spec:
  runtimeClassName: kata-qemu-nvidia-gpu-tdx
  restartPolicy: Never
  containers:
  - name: cuda-vectoradd
    image: "nvcr.io/nvidia/k8s/cuda-sample:vectoradd-cuda12.5.0-ubuntu22.04"
    resources:
      limits:
        nvidia.com/pgpu: "1"

2. Blackwell(B200、B300):多 GPU 直通(MPT)

Pod 其他部分不变,只需要把资源配置改成:

    resources:
      limits:
        nvidia.com/pgpu: "8"

3. Hopper:带 Protected PCIe(PPCIE)和 NVSwitch 的多 GPU 直通

在 Hopper 上,多 GPU 机密直通使用 Protected PCIe。也就是说,Pod 必须同时申请 GPU 和 NVSwitch 设备,节点也必须切到 ppcie 机密 GPU 模式。

kubectl label node <node-name> nvidia.com/cc.mode=ppcie --overwrite

Pod 其他部分仍然保持不变,只需要把资源段改成如下配置,把节点上的 GPU 与 NVSwitch 分配给 Pod:

    resources:
      limits:
        nvidia.com/pgpu: "8"
        nvidia.com/nvswitch: "4"

修改 nvidia.com/cc.mode 之后,等待 GPU Operator 相关组件重新稳定,并确认 Pod 状态正常(kubectl get pods -A)。可参考 Kata QEMU GPU guide 的做法。

如果要恢复为单 GPU 直通,把标签改回 on:

kubectl label node <node-name> nvidia.com/cc.mode=on --overwrite
最后修改 November 6, 2026: docs: fixup nvidia webpage links (4f68ac7)