ack-nvidia-device-plugin组件介绍与变更说明

GPU设备插件(NVIDIA Device Plugin)是Kubernetes集群中用于管理每个节点的GPU的组件,使得Kubernetes能够更方便、高效地利用GPU资源。

使用说明

关于如何查看NVIDIA Device Plugin版本、升级NVIDIA Device Plugin、重启NVIDIA Device Plugin、GPU设备隔离等更多操作,请参见配置及管理NVIDIA Device Plugin

对于以DaemonSet方式部署的NVIDIA Device Plugin,有如下几点需要说明:

  • 集群在创建时,会自动安装该组件。

  • 如果您卸载该组件将导致扩容的GPU节点无法正常上报GPU资源。

  • 集群由低版本升级到1.32过程中,会同时将以Static Pod方式部署的NVIDIA Device Plugin升级为ACK组件形式。

  • DaemonSet存在一个NodeSelector(ack.node.gpu.schedule=default),GPU节点在添加到集群中时,ACK添加节点的脚本会自动为该GPU节点打上该标签,使DaemonSet能够在GPU节点上部署对应的Pod。

重要
  • 若您节点操作系统为Ubuntu 22.04Red Hat Enterprise Linux(RHEL) 9.3 64位,由于ack-nvidia-device-plugin组件会为Pod默认配置环境变量NVIDIA_VISIBLE_DEVICES=all,可能会因为节点执行systemctl daemon-reloadsystemctl daemon-reexec命令后,无法访问GPU设备导致NVIDIA Device Plugin无法正常工作。更多详情,请参见运行GPU容器出现Failed to initialize NVML: Unknown Error的问题怎么办?

  • 若您在20250501之前将集群从低版本升级到1.32版本,集群中可能会同时存在以Static Pod方式部署和DaemonSet方式部署的NVIDIA Device Plugin。可执行如下脚本查看以Static Pod方式部署的节点。

    #!/bin/bash
    for i in $(kubectl get po -n kube-system -l component=nvidia-device-plugin | grep -v NAME | awk '{print $1}');do
        if kubectl get po $i -o yaml -n kube-system | grep 'kubernetes.io/config.source: file' &> /dev/null;then
        kubectl get pod $i -n kube-system -o jsonpath='{.spec.nodeName}{"\n"}'
        fi
    done

    预期输出:

    cn-beijing.10.12.XXX.XX
    cn-beijing.10.13.XXX.XX

    通过预期输出可以看到部分节点中仍存在以Static Pod方式部署的NVIDIA Device Plugin。可以使用如下方式将Static Pod方式部署的NVIDIA Device Plugin迁移到DaemonSet。

    kubectl label nodes <NODE_NAME> ack.node.gpu.schedule=default

版本差异

ack-nvidia-device-plugin组件随着集群版本的不同,其实现方式和管理策略也有所变化。若您集群版本低于1.20,建议您手动升级集群。相关差异如下所示:

特性

1.32及以上集群版本

1.201.31间集群版本

部署方式

DaemonSet

Static Pod

管理方式

控制台组件管理

手动维护

节点标签要求

ack.node.gpu.schedule=default

无特殊要求

变更说明

202507

版本号

镜像Tag

变更时间

变更内容

变更影响

v0.3.0

v0.17.0-ack-1.0-678014dd

20250714

此次升级不会对业务造成影响。

202504

版本号

镜像Tag

变更时间

变更内容

变更影响

v0.2.0

v0.17.0-49a827fd-aliyun

20250429

  • 支持health check能力(检测间隔时间为5分钟),避免Device Pluginkubelet GRPC连接中断导致节点上报GPU资源为0的问题。

  • 修复GPU卡故障情况下,不断重试创建GPU Pod问题。

  • 基于NVIDIA Device Plugin社区v0.17.0版本。

此次升级不会对业务造成影响。

202412

版本号

镜像Tag

变更时间

变更内容

变更影响

v0.1.0

v0.17.0-1-aliyun

20241226

基于NVIDIA Device Plugin社区v0.17.0版本。

此次升级不会对业务造成影响。