您可以在容器中启用和管理图形处理单元 (GPU) 资源。例如,您可能更喜欢在 GPU 环境中运行人工智能 (AI) 和机器学习 (ML) Notebook。如需运行 GPU 容器工作负载,您必须拥有支持 GPU 设备的 Kubernetes 集群。对于已预配 GPU 机器的 Kubernetes 集群,默认启用 GPU 支持。
准备工作
如需将 GPU 部署到容器,您必须具备以下条件:
具有 GPU 机器类的 Kubernetes 集群。如需了解可为集群机器配置的选项,请参阅支持的 GPU 卡部分。
User Cluster Node Viewer 角色 (
user-cluster-node-viewer
) 用于检查 GPU,Namespace Admin 角色 (namespace-admin
) 用于在项目命名空间中部署 GPU 工作负载。托管 Kubernetes 集群的区域管理 API 服务器的 kubeconfig 路径。登录并生成 kubeconfig 文件(如果您还没有)。
组织基础架构集群在旨在托管 GPU 的可用区中的 kubeconfig 路径。 登录并生成 kubeconfig 文件(如果您还没有)。
Kubernetes 集群名称。如果您没有此信息,请向平台管理员索取。
Kubernetes 集群 kubeconfig 路径。 登录并生成 kubeconfig 文件(如果您还没有)。
配置容器以使用 GPU 资源
如需在容器中使用这些 GPU,请完成以下步骤:
验证您的 Kubernetes 集群是否具有支持 GPU 的节点池:
kubectl describe nodepoolclaims -n KUBERNETES_CLUSTER_NAME \ --kubeconfig ORG_INFRASTRUCTURE_CLUSTER
相关输出类似于以下代码段:
Spec: Machine Class Name: a2-ultragpu-1g-gdc Node Count: 2
如需查看受支持的 GPU 机器类型和多实例 GPU (MIG) 配置文件的完整列表,请参阅集群节点机器类型。
将
.containers.resources.requests
和.containers.resources.limits
字段添加到容器规范中。每个资源名称因机器类而异。 检查 GPU 资源分配,找到 GPU 资源名称。例如,以下容器规范从
a2-ultragpu-1g-gdc
节点请求了 GPU 的三个分区:... containers: - name: my-container image: "my-image" resources: requests: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 limits: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 3 ...
容器还需要额外的权限才能访问 GPU。对于每个请求 GPU 的容器,请将以下权限添加到容器规范中:
... securityContext: seLinuxOptions: type: unconfined_t ...
应用容器清单文件:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG
检查 GPU 资源分配
如需检查 GPU 资源分配情况,请使用以下命令:
kubectl describe nodes NODE_NAME
将
NODE_NAME
替换为管理您要检查的 GPU 的节点。相关输出类似于以下代码段:
Capacity: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7 Allocatable: nvidia.com/mig-1g.10gb-NVIDIA_A100_80GB_PCIE: 7
记下 GPU 的资源名称;在配置容器以使用 GPU 资源时,您必须指定这些名称。