更新时间:2025-12-08 GMT+08:00

CCE AI套件(NVIDIA GPU)

插件简介

CCE AI套件(NVIDIA GPU)插件是一款用于启用和管理GPU资源的设备管理插件,支持容器内访问GPU显卡资源,帮助用户在云原生环境中高效运行和运维基于GPU的计算密集型工作负载。通过该插件,Standard/Turbo集群可具备GPU调度、驱动自动化安装、运行时管理及性能指标监控等能力,为GPU工作负载提供完整的生命周期支持。集群中使用GPU节点时必须安装本插件。

nvidia-gpu-device-plugin工作机制

nvidia-gpu-device-plugin是CCE AI套件(NVIDIA GPU)插件的核心组件之一,作为连接容器平台与GPU硬件的桥梁,它能够将物理GPU资源抽象为容器平台可识别、可调度的资源类型,从而解决容器化环境中GPU资源的分配与使用问题。

该组件以DaemonSet方式部署在集群的每个节点上,可让节点上的GPU被kubelet发现并上报至Kubernetes。此后,用户只需在Pod spec中声明所需的GPU资源,即可调用对应节点上的GPU资源。kubelet不主动感知GPU设备,需要依赖nvidia-gpu-device-plugin注册和汇报GPU信息。这个插件运行在每个GPU节点上,并通过gRPC协议与kubelet的Device Plugin Manager进行通信,完成注册流程。其具体工作流程如下:
图1 GPU资源上报与健康
  1. 注册请求:nvidia-gpu-device-plugin以客户端的身份向kubelet发起注册请求,主要汇报以下关键信息:
    • 设备名称:即nvidia.com/gpu,用于标识插件所管理的硬件资源类型,便于kubelet识别和调度。
    • Unix Socket:用于组件与kubelet进行本地gRPC通信,确保kubelet能准确调用正确的服务。
    • API版本:标明所使用的Device Plugin API协议版本,以保证双方通信协议兼容。
  2. 启动服务:完成注册后,nvidia-gpu-device-plugin会启动一个gRPC服务器,正式对外提供服务,用于接收并响应kubelet发起的请求,包括设备列表查询、健康状态汇报、资源分配等。该gRPC服务监听的地址(Unix Socket路径)及支持的Device Plugin API版本,均在注册阶段已向kubelet上报,确保kubelet能基于注册信息正确建立连接并调用相应接口。
  3. 健康监控:当gRPC服务器启动后,kubelet会通过ListAndWatch接口与nvidia-gpu-device-plugin建立一个长连接,用于持续监听设备ID及其健康状态。一旦nvidia-gpu-device-plugin检测到某个设备出现异常,会通过该连接主动上报给kubelet。
  4. 信息上报:kubelet会将这些设备信息整合到节点的状态中,并将设备数量等资源数据上报至kube-apiserver。后续调度器(kube-scheduler/volcano)便可基于这些信息进行资源调度决策。
  5. 持久化存储:CCE会将节点上报的GPU设备信息(如数量、状态等)存储至Etcd中,实现集群级资源状态的持久化。这一过程确保了GPU资源数据在集群组件故障或重启后不丢失,同时为调度器、控制器等组件提供一致的数据源,保障资源调度与管理的可靠性。

约束与限制

  • 下载的驱动必须是后缀为“.run”的文件。
  • 仅支持Nvidia Tesla驱动,不支持GRID驱动。
  • 安装或重装插件时,需要保证驱动下载链接正确且可正常访问,插件对链接有效性不做额外校验。
  • 插件仅提供驱动的下载及安装脚本执行功能,插件的状态仅代表插件本身功能正常,与驱动是否安装成功无关。
  • 对于GPU驱动版本与您业务应用的兼容性(GPU驱动版本与CUDA库版本的兼容性),CCE不做保证,请您自行验证。
  • 对于已经安装GPU驱动的自定义操作系统镜像,CCE无法保证其提供的GPU驱动与CCE其他GPU组件兼容(例如监控组件等)。

安装插件

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“插件中心”,在右侧找到CCE AI套件(NVIDIA GPU)插件,单击“安装”
  3. 选择是否“启用dcgm-exporter组件进行DCGM指标观测”,开启后将在GPU节点上同时部署dcgm-exporter组件。

    插件版本为2.7.40及以上时,支持部署dcgm-exporter组件。dcgm-exporter组件保持社区能力,暂不支持共享模式和GPU虚拟化。

    启用dcgm-exporter组件后,如果需要将采集的GPU监控数据上报至AOM服务,请参见实现DCGM指标的全面监控

  4. 设置插件支持的“参数配置”

    表1 CCE AI套件(NVIDIA GPU)插件参数配置

    参数

    参数说明

    集群默认驱动

    集群下全部GPU节点将使用相同的驱动,请选择合适的GPU驱动版本,或自定义驱动链接地址,填写Nvidia驱动的下载链接。
    须知:
    • 如果下载链接为公网地址,如nvidia官网地址(https://us.download.nvidia.com/tesla/470.103.01/NVIDIA-Linux-x86_64-470.103.01.run),各GPU节点均需要绑定EIP。获取驱动链接方法请参考获取驱动链接-公网地址
    • 若下载链接为OBS上的链接,无需绑定EIP 。获取驱动链接方法请参考获取驱动链接-OBS地址
    • 请确保Nvidia驱动版本与GPU节点适配。
    • 更改驱动版本后,需要重启节点才能生效。

    插件安装完成后,GPU虚拟化和节点池驱动配置请前往“配置中心 > 异构资源配置”页进行设置。

  5. 单击“安装”,安装插件的任务即可提交成功。

    卸载插件将会导致重新调度的GPU Pod无法正常运行,但已运行的GPU Pod不会受到影响。

验证插件

插件安装完成后,在GPU节点及调度了GPU资源的容器中执行nvidia-smi命令,验证GPU设备及驱动的可用性。

  • GPU节点:
    • 插件版本为2.0.0以下时,请执行以下命令:
      cd /opt/cloud/cce/nvidia/bin && ./nvidia-smi
    • 插件版本为2.0.0及以上时,请执行以下命令:
      cd /usr/local/nvidia/bin && ./nvidia-smi
  • 容器:
    • 当集群版本在1.27及以下时,请执行以下命令:
      cd /usr/local/nvidia/bin && ./nvidia-smi
    • 当集群版本在1.28及以上时,请执行以下命令:
      cd /usr/bin && ./nvidia-smi

若能正常返回GPU信息,说明设备可用,插件安装成功。

获取驱动链接-公网地址

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 创建节点,在“节点规格”处选择要创建的GPU节点,选中后下方显示的信息中可以看到节点的GPU显卡型号。

  1. 登录到NVIDIA驱动下载页面,搜索对应的驱动信息,其中操作系统必须选Linux 64-bit

    图2 参数选择

  2. 驱动信息确认完毕,单击“Find”按钮,会跳转到驱动信息展示页面,找到需要下载的驱动,单击“view”跳转到下载页面。

    图3 驱动信息

  3. 鼠标右键单击“Download”按钮,复制下载链接。

    图4 获取链接

获取驱动链接-OBS地址

  1. 将驱动上传到对象存储服务OBS中,并将驱动文件设置为公共读。

    节点重启时会重新下载驱动进行安装,请保证驱动的OBS桶链接长期有效。

  2. 在桶列表单击待操作的桶,进入“概览”页面。
  3. 在左侧导航栏,单击“对象”。
  4. 单击目标对象名称,在对象详情页复制驱动链接。

组件说明

表2 CCE AI套件(NVIDIA GPU)插件组件

容器组件

说明

资源类型

nvidia-driver-installer

为节点安装Nvidia GPU驱动的工作负载,仅在安装场景占用资源,安装完成后无资源占用。

DaemonSet

nvidia-gpu-device-plugin

为容器提供Nvidia GPU异构算力的Kubernetes设备插件。

DaemonSet

nvidia-operator

为集群提供Nvidia GPU节点管理能力。

Deployment

相关链接

  • CCE AI套件(NVIDIA GPU)插件提供GPU监控指标,关于GPU指标详情请参见GPU监控指标说明