要使开发人员能够在 TKG Service 集群上部署 AI/ML 工作负载,作为集群运维人员,您可以创建一个或多个 Kubernetes 集群,并在每个集群上安装 NVIDIA Network Operator 和 GPU Operator。

运维人员步骤 1:验证必备条件

这些说明假定 vSphere 管理员已为 NVIDIA GPU 设置环境。请参见在 TKGS 集群上部署 AI/ML 工作负载的 vSphere 管理员工作流

这些说明假定您要安装 GPU Operator 的 NVIDIA AI Enterprise (NVAIE) 版本,该版本已经过预配置和优化,可与 vSphere IaaS control plane 配合使用。NVAIE GPU Operator 与公用 NGC 目录中提供的 GPU Operator 不同。有关详细信息,请参见 NVIDIA AI Enterprise

这些说明假定您使用的 NVAIE GPU Operator 和 vGPU 驱动程序版本具有与 ESXi 匹配的 VIB。有关详细信息,请参见 NVIDIA GPU Operator 版本控制

置备 TKG 集群时,必须使用 TKR 的 Ubuntu 版本。对于 vSphere 8 主管 上的 TKG,系统将在集群 YAML 中使用注释指定 Ubuntu 版本。

运维人员步骤 2:为 NVIDIA vGPU 置备 TKGS 集群

VMware 在具有 NVIDIA GPU OperatorNVIDIA Network Operator 的 NVIDIA GPU 认证服务器上为 NVIDIA 虚拟 GPU 提供本机 TKGS 支持。在 TKGS 工作负载集群中安装这些 Operator。要置备用于托管 vGPU 工作负载的 TKGS 集群,请完成以下步骤。
  1. 安装 适用于 vSphere 的 Kubernetes CLI 工具

    请参见安装 适用于 vSphere 的 Kubernetes CLI 工具

  2. 使用 kubectl 的 vSphere 插件主管 进行身份验证。
    kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME
    注: 仅当随 FQDN 启用 主管 时,才能使用 FQDN。
  3. 使用 kubectl,将上下文切换到 vSphere 管理员为 TKGS vGPU 集群创建的 vSphere 命名空间
    kubectl config get-contexts
    kubectl config use-context TKG-GPU-CLUSTER-NAMESPACE
  4. 使用 vSphere 管理员创建的 vGPU 配置文件获取自定义虚拟机类的名称。
    kubectl get virtualmachineclass
    注: 虚拟机类必须绑定到目标 vSphere 命名空间
  5. 获取 vSphere 管理员从内容库同步并添加到 vSphere 命名空间 中的 Ubuntu Tanzu Kubernetes 版本 的 TKR 名称。
    kubectl get tkr
  6. 编写用于置备启用了 vGPU 的 TKG 集群的 YAML。
    1. 确定要使用的 TKGS 集群置备 API:v1alpha3 API 还是 v1beta1 API:TKG 集群置备 API
    2. 根据您选择的 API,请参阅该 API 的 Ubuntu 示例。
      注: 您必须使用 Ubuntu 操作系统映像。不能使用 Photon OS。
    3. 使用从上述命令的输出中收集的信息来自定义 TKGS 集群规范。
  7. 通过运行以下 kubectl 命令置备集群。
    kubectl apply -f CLUSTER-NAME.yaml
    例如:
    kubectl apply -f tkg-gpu-cluster-1.yaml
  8. 验证集群置备。
    使用 kubectl 监控集群节点的部署。
    kubectl get tanzukubernetesclusters -n NAMESPACE
  9. 使用 kubectl 的 vSphere 插件 登录 TKGS vGPU 集群。
    kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  10. 验证集群。
    使用以下命令验证集群:
    kubectl cluster-info
    kubectl get nodes
    kubectl get namespaces
    kubectl api-resources

运维人员步骤 3:安装 NVIDIA Network Operator

NVIDIA Network Operator 利用 Kubernetes 自定义资源和 Operator 框架来优化 vGPU 的网络连接。有关详细信息,请参见 NVIDIA Network Operator
  1. 确认您已登录到 TKGS vGPU 工作负载集群,并且已将上下文设置为 TKGS vGPU 工作负载集群命名空间。

    如有必要,请参阅运维人员步骤 2:为 NVIDIA vGPU 置备 TKGS 集群中的说明。

  2. 按照 Helm 文档安装 Helm。
  3. 获取 NVIDIA Network Operator Helm 图表。
    helm fetch https://helm.ngc.nvidia.com/nvaie/charts/network-operator-v1.1.0.tgz --username='$oauthtoken' --password=<YOUR API KEY> --untar
  4. 为配置值创建 YAML 文件。
    vi values.yaml
  5. 使用以下信息填充 values.yaml 文件。
    deployCR: true
     ofedDriver:
      deploy: true
     rdmaSharedDevicePlugin:
      deploy: true
      resources:
       - name: rdma_shared_device_a
       vendors: [15b3]
       devices: [ens192]
  6. 使用以下命令安装 NVIDIA Network Operator。
    helm install network-operator -f ./values.yaml -n network-operator --create-namespace --wait network-operator/

运维人员步骤 4:安装 NVIDIA GPU Operator

NVIDIA 为客户提供了预配置的 GPU Operator NVIDIA AI Enterprise。这些说明假定您要使用此预配置的 GPU Operator 版本。这些说明基于 NVIDIA 提供的有关安装 GPU Operator 的说明,但已针对 vSphere 8 上的 TKG 进行了更新。

完成以下步骤,以在置备的 TKG 集群上安装 GPU Operator NVIDIA AI Enterprise。
  1. 确认您已登录到 TKGS vGPU 工作负载集群,并且已将上下文设置为 TKGS vGPU 工作负载集群命名空间。

    如有必要,请参阅运维人员步骤 2:为 NVIDIA vGPU 置备 TKGS 集群中的说明。

  2. 如果尚未安装,请按照 Helm 文档安装 Helm。
  3. 创建 gpu-operator Kubernetes 命名空间。
    kubectl create namespace gpu-operator
  4. 创建空的 vGPU 许可证配置文件。
    sudo touch gridd.conf
  5. 生成并下载 NLS 客户端许可证令牌。

    请参阅 NVIDIA 许可证系统用户指南中的第 4.6 节:生成客户端配置令牌

  6. 重命名已下载到 client_configuration_token.tok 的 NLS 客户端许可证令牌。
  7. gpu-operator 命名空间中创建 licensing-config ConfigMap 对象。
    在此 ConfigMap 中加入 vGPU 许可证配置文件 ( gridd.conf) 和 NLS 客户端许可证令牌 ( *.tok)
    kubectl create configmap licensing-config \
        -n gpu-operator --from-file=gridd.conf --from-file=<path>/client_configuration_token.tok
  8. 为包含可在 Linux 中与 NVIDIA GPU Operator 一起使用的容器化 NVIDIA vGPU 软件图形驱动程序的专用注册表创建映像提取密钥。
    gpu-operator 命名空间中创建包含注册表密钥名称 ngc-secret 和专用注册表名称 nvcr.io/nvaie 的映像提取密钥。在指示的字段中填入 NGC API 密钥和电子邮件地址。
    kubectl create secret docker-registry ngc-secret \
    --docker-server=‘nvcr.io/nvaie’ \
    --docker-username=‘$oauthtoken’ \
    --docker-password=<YOUR_NGC_API_KEY> \
    --docker-email=<YOUR_EMAIL_ADDRESS> \
    -n gpu-operator
  9. 下载适用于 NVAIE GPU Operator 版本 2.2 的 helm 图表。
    替换您的 API 密钥。
    helm fetchhttps://helm.ngc.nvidia.com/nvaie/charts/gpu-operator-2-2-v1.11.1.tgz--username=‘$oauthtoken’ \
    --password=<YOUR API KEY>
  10. 在 TKG 集群中安装 NVAIE GPU Operator 版本 2.2。
    helm install gpu-operator ./gpu-operator-2-2-v1.11.1.tgz -n gpu-operator

运维人员步骤 5:部署 AI/ML 工作负载

NVIDIA GPU Cloud 目录提供了几个现成的容器映像,可用于在启用了 vGPU 的 Tanzu Kubernetes 集群上运行 AI/ML 工作负载。有关可用映像的详细信息,请参见 NGC 文档