您可以为容器启用和管理图形处理单元 (GPU) 资源。例如,您可能更喜欢在 GPU 环境中运行人工智能 (AI) 和机器学习 (ML) 笔记本。在 Google Distributed Cloud (GDC) 经过网闸隔离的设备中,默认启用 GPU 支持。
准备工作
如需完成本文档中的任务,您必须申请必要的权限并准备环境。
申请 IAM 角色
如需在 Kubernetes 集群中创建、删除、修改或查看资源,请让组织 IAM 管理员在您的项目命名空间中向您授予 Namespace
Admin (namespace-admin) 角色。借助此角色,您可以在项目命名空间中部署 GPU 工作负载。
准备环境
登录并生成 Bare Metal Kubernetes 集群的 kubeconfig 文件。
使用 Kubernetes 集群的 kubeconfig 路径替换这些说明中的
CLUSTER_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:您要向其部署容器工作负载的 Bare Metal 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