K8S GPU 配置

NVIDIA驱动安装

以下操作在Redhat 7.6上进行,已安装好k8s并使用docker作为contianer runtime

查看服务器的GPU信息

1
2
yum install pciutils
lspci | grep "NVIDIA"

下载对应的驱动文件

官网下载驱动

安装驱动

redhat/centos rpm离线包安装时,需要epel提供一些必要软件

1
2
3
4
5
6
yum install -y epel-release  
curl -OL https://cn.download.nvidia.cn/tesla/515.48.07/nvidia-driver-local-repo-rhel7-515.48.07-1.0-1.x86_64.rpm
rpm -ivh nvidia-driver-local-repo-rhel7-515.48.07-1.0-1.x86_64.rpm
yum install cuda-drivers
reboot
nvidia-smi

安装nvidia-docker

1
2
3
4
5
6
7
8
9
10
11
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
&& curl -s -L https://nvidia.github.io/libnvidia-container/$distribution/libnvidia-container.repo | sudo tee /etc/yum.repos.d/nvidia-container-toolkit.repo
yum install -y nvidia-docker2
# 安装完成后,会把原有的配置备份,可以在原有的配置上修改添加default-runtime,然后覆盖/etc/docker/daemon.json
# 编辑 daemon.json,如果没有 default-runtime 则加入,并且添加上之前原有的配置内容。
vim /etc/docker/daemon.json
"default-runtime": "nvidia",

systemctl restart docker

docker run --rm -e NVIDIA_VISIBLE_DEVICES=all nvidia/cuda:11.0.3-base-ubuntu20.04 nvidia-smi

安装k8s-device-plugin

部署说明

官方文档
gpu-feature-discovery
k8s-device-plugin

部署文件

  • 部署使用helm chart
    1
    2
    3
    4
    5
    #templates/_helpers.tpl上可能有问题,部署前可以helm template .试试看
    # 或者helm install ndp nvidia-device-plugin --dry-run
    allowPrivilegeEscalation: false
    capabilities:
    drop: ["ALL"]
  • 需要最新版本helm
  • 所需镜像
    1
    2
    3
    4
    k8s.gcr.io/nfd/node-feature-discovery:v0.11.0
    nvcr.io/nvidia/gpu-feature-discovery:v0.6.1
    k8s.gcr.io/nfd/node-feature-discovery:v0.11.0
    nvcr.io/nvidia/k8s-device-plugin:v0.12.2

    开始安装

    MIG_STRATEGY类型可查阅官网文档
    MIG_STRATEGY=none
    ./helm -n nvidia-device-plugin install \
     ndp \
     --set migStrategy=${MIG_STRATEGY} \
     --set gfd.enabled=true \
     nvidia-device-plugin