您可以在容器中启用和管理图形处理单元 (GPU) 资源。例如,您可能更喜欢在 GPU 环境中运行人工智能 (AI) 和机器学习 (ML) Notebook。在 Google Distributed Cloud (GDC) 经过网闸隔离的设备中,GPU 支持默认处于启用状态。
准备工作
如需将 GPU 部署到容器,您必须具备以下条件:
在项目命名空间中部署 GPU 工作负载所需的命名空间管理员角色 (
namespace-admin
)。裸机 Kubernetes 集群的 kubeconfig 路径。 登录并生成 kubeconfig 文件(如果您还没有)。
配置容器以使用 GPU 资源
如需在容器中使用 GPU,请完成以下步骤:
确认您的 Kubernetes 集群节点支持 GPU 资源分配:
kubectl describe nodes NODE_NAME
将
NODE_NAME
替换为管理您要检查的 GPU 的节点。相关输出类似于以下代码段:
Capacity: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Allocatable: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1
将
.containers.resources.requests
和.containers.resources.limits
字段添加到容器规范中。由于 Kubernetes 集群已预先配置了 GPU 机器,因此所有工作负载的配置都相同:... containers: - name: CONTAINER_NAME image: CONTAINER_IMAGE resources: requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 ...
替换以下内容:
CONTAINER_NAME
:容器的名称。CONTAINER_IMAGE
:用于访问 GPU 机器的容器映像。您必须添加映像的容器注册表路径和版本,例如REGISTRY_PATH/hello-app:1.0
。
容器还需要额外的权限才能访问 GPU。对于每个请求 GPU 的容器,请将以下权限添加到容器规范中:
... securityContext: seLinuxOptions: type: unconfined_t ...
应用容器清单文件:
kubectl apply -f CONTAINER_MANIFEST_FILE \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG
替换以下内容:
CONTAINER_MANIFEST_FILE
:容器工作负载自定义资源的 YAML 文件。NAMESPACE
:用于部署容器工作负载的项目命名空间。CLUSTER_KUBECONFIG
:您要将容器工作负载部署到的裸金属 Kubernetes 集群的 kubeconfig 文件。
验证您的 pod 是否正在运行并使用 GPU:
kubectl get pods -A | grep CONTAINER_NAME \ -n NAMESPACE \ --kubeconfig CLUSTER_KUBECONFIG
相关输出类似于以下代码段:
Port: 80/TCP Host Port: 0/TCP State: Running Ready: True Restart Count: 0 Limits: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1 Requests: nvidia.com/gpu-pod-NVIDIA_A100_80GB_PCIE: 1