目前阿里云ACK提供了GPU共享调度能力,服务于使用共享单GPU的模型预测场景,同时也可以通过Nvidia驱动在内核态的控制保障GPU显存的隔离。本文介绍如何在GPU节点上安装GPU隔离模块及安装GPU分配查询工具,实现GPU的调度和隔离能力。

前提条件

使用须知

配置 支持版本
Kubernetes 1.16.06
Helm版本 3.0及以上版本
Nvidia驱动版本 418.87.01及以上版本
Docker版本 19.03.5
操作系统 CentOS 7.6、CentOS 7.7、Ubuntu 16.04和Ubuntu 18.04
支持显卡 Telsa P4、Telsa P100、 Telsa T4和Telsa v100(16 GB)

步骤一:为带有GPU设备的节点打标签

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择集群 > 节点
  3. 节点列表页面,选择目标集群并单击页面右上角标签管理
  4. 标签管理页面,批量选择节点,然后单击添加标签
    添加标签
  5. 在弹出的添加对话框中,填写标签名称
    注意
    • 您可以设置名称cgputrue,使共享生效。
    • 删除cgpu标签并不能关闭共享,您可以设置名称cgpufalse,关闭共享。
    添加标签
  6. 单击确定

步骤二:为添加标签的节点安装共享GPU组件

  1. 登录容器服务管理控制台
  2. 在控制台左侧导航栏中,选择市场 > 应用目录
  3. 应用目录页面,选中并单击ack-cgpu
  4. 应用目录-ack-cgpu页面右侧的创建面板中,选中目标集群,然后单击创建
    您无需设置命名空间发布名称,系统显示默认值。cgpu
    您可以执行命令helm get manifest cgpu -n kube-system | kubectl get -f -查看cGPU组件是否安装成功。当出现以下命令详情时,说明cGPU组件安装成功。
    # helm get manifest cgpu -n kube-system | kubectl get -f -
    NAME                                    SECRETS   AGE
    serviceaccount/gpushare-device-plugin   1         39s
    serviceaccount/gpushare-schd-extender   1         39s
    
    NAME                                                           AGE
    clusterrole.rbac.authorization.k8s.io/gpushare-device-plugin   39s
    clusterrole.rbac.authorization.k8s.io/gpushare-schd-extender   39s
    
    NAME                                                                  AGE
    clusterrolebinding.rbac.authorization.k8s.io/gpushare-device-plugin   39s
    clusterrolebinding.rbac.authorization.k8s.io/gpushare-schd-extender   39s
    
    NAME                             TYPE       CLUSTER-IP    EXTERNAL-IP   PORT(S)           AGE
    service/gpushare-schd-extender   NodePort   10.6.13.125   <none>        12345:32766/TCP   39s
    
    NAME                                       DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR    AGE
    daemonset.apps/cgpu-installer              4         4         4       4            4           cgpu=true        39s
    daemonset.apps/device-plugin-evict-ds      4         4         4       4            4           cgpu=true        39s
    daemonset.apps/device-plugin-recover-ds    0         0         0       0            0           cgpu=false   39s
    daemonset.apps/gpushare-device-plugin-ds   4         4         4       4            4           cgpu=true        39s
    
    NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/gpushare-schd-extender   1/1     1            1           38s
    
    NAME                           COMPLETIONS   DURATION   AGE
    job.batch/gpushare-installer   3/1 of 3      3s         38s