管理 GPU 容器工作负载

您可以为容器启用和管理图形处理单元 (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,请完成以下步骤:

  1. 确认 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
    
  2. .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
  3. 容器还需要额外的权限才能访问 GPU。对于每个请求 GPU 的容器,请将以下权限添加到容器规范中:

    ...
    securityContext:
     seLinuxOptions:
       type: unconfined_t
    ...
    
  4. 应用容器清单文件:

    kubectl apply -f CONTAINER_MANIFEST_FILE \
        -n NAMESPACE \
        --kubeconfig CLUSTER_KUBECONFIG
    

    替换以下内容:

    • CONTAINER_MANIFEST_FILE:容器工作负载自定义资源的 YAML 文件。
    • NAMESPACE:用于部署容器工作负载的项目命名空间。
    • CLUSTER_KUBECONFIG:您要向其部署容器工作负载的 Bare Metal Kubernetes 集群的 kubeconfig 文件。
  5. 验证 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