要使开发人员能够在 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 集群
- 安装 适用于 vSphere 的 Kubernetes CLI 工具。
- 使用 kubectl 的 vSphere 插件 对 主管 进行身份验证。
kubectl vsphere login --server=IP-ADDRESS-or-FQDN --vsphere-username USERNAME
注: 仅当随 FQDN 启用 主管 时,才能使用 FQDN。 - 使用 kubectl,将上下文切换到 vSphere 管理员为 TKGS vGPU 集群创建的 vSphere 命名空间。
kubectl config get-contexts
kubectl config use-context TKG-GPU-CLUSTER-NAMESPACE
- 使用 vSphere 管理员创建的 vGPU 配置文件获取自定义虚拟机类的名称。
kubectl get virtualmachineclass
注: 虚拟机类必须绑定到目标 vSphere 命名空间。 - 获取 vSphere 管理员从内容库同步并添加到 vSphere 命名空间 中的 Ubuntu Tanzu Kubernetes 版本 的 TKR 名称。
kubectl get tkr
- 编写用于置备启用了 vGPU 的 TKG 集群的 YAML。
- 确定要使用的 TKGS 集群置备 API:v1alpha3 API 还是 v1beta1 API:TKG 集群置备 API。
- 根据您选择的 API,请参阅该 API 的 Ubuntu 示例。
注: 您必须使用 Ubuntu 操作系统映像。不能使用 Photon OS。
- 使用从上述命令的输出中收集的信息来自定义 TKGS 集群规范。
- 通过运行以下 kubectl 命令置备集群。
kubectl apply -f CLUSTER-NAME.yaml
例如:kubectl apply -f tkg-gpu-cluster-1.yaml
- 验证集群置备。
使用 kubectl 监控集群节点的部署。
kubectl get tanzukubernetesclusters -n NAMESPACE
- 使用 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
- 验证集群。
使用以下命令验证集群:
kubectl cluster-info
kubectl get nodes
kubectl get namespaces
kubectl api-resources
运维人员步骤 3:安装 NVIDIA Network Operator
- 确认您已登录到 TKGS vGPU 工作负载集群,并且已将上下文设置为 TKGS vGPU 工作负载集群命名空间。
如有必要,请参阅运维人员步骤 2:为 NVIDIA vGPU 置备 TKGS 集群中的说明。
- 按照 Helm 文档安装 Helm。
- 获取 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
- 为配置值创建 YAML 文件。
vi values.yaml
- 使用以下信息填充
values.yaml
文件。deployCR: true ofedDriver: deploy: true rdmaSharedDevicePlugin: deploy: true resources: - name: rdma_shared_device_a vendors: [15b3] devices: [ens192]
- 使用以下命令安装 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 进行了更新。
- 确认您已登录到 TKGS vGPU 工作负载集群,并且已将上下文设置为 TKGS vGPU 工作负载集群命名空间。
如有必要,请参阅运维人员步骤 2:为 NVIDIA vGPU 置备 TKGS 集群中的说明。
- 如果尚未安装,请按照 Helm 文档安装 Helm。
- 创建
gpu-operator
Kubernetes 命名空间。kubectl create namespace gpu-operator
- 创建空的 vGPU 许可证配置文件。
sudo touch gridd.conf
- 生成并下载 NLS 客户端许可证令牌。
请参阅 NVIDIA 许可证系统用户指南中的第 4.6 节:生成客户端配置令牌。
- 重命名已下载到
client_configuration_token.tok
的 NLS 客户端许可证令牌。 - 在
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
- 为包含可在 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
- 下载适用于 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>
- 在 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 文档。