前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Kubernetes 启用GPU

Kubernetes 启用GPU

作者头像
李鹤
发布2023-03-06 11:30:29
发布2023-03-06 11:30:29
7770
举报
文章被收录于专栏:k-cloud-labsk-cloud-labs

kubernetes设置

k8s 1.10之前需要在kube-apiserver、kube-controller-manager、kube-scheduler、kubelet中开启如下feature,如果不是首次部署的话,重启以上所有组件:

–feature-gates=“DevicePlugins=true”

安装 NVIDIA Driver~=361.93

安装nvidia-docker2,由于目前使用的docker版本提示信息里包含自定义字样,只能使用如下方式安装:

所有安装方式参考这里

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

# If you have nvidia-docker 1.0 installed: we need to remove it and all existing GPU containers docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f sudo yum remove nvidia-docker # Add the package repositories distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.repo | \ sudo tee /etc/yum.repos.d/nvidia-container-runtime.repo # Install the nvidia runtime hook sudo yum install -y nvidia-container-runtime-hook sudo mkdir -p /usr/libexec/oci/hooks.d echo -e '#!/bin/sh\nPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" exec nvidia-container-runtime-hook "$@"' | \ sudo tee /usr/libexec/oci/hooks.d/nvidia sudo chmod +x /usr/libexec/oci/hooks.d/nvidia # Test nvidia-smi with the latest official CUDA image # You can't use `--runtime=nvidia` with this setup. docker run --rm nvidia/cuda nvidia-smi

安装nvidia-container-runtime,在上一步中已经安装了对应的yum repo,这里直接执行如下命令即可:

因为使用了上一步的安装方式,所以需要进行这一步的安装,如果是通过yum直接安装的nvidia-docker2,则不需要进行此步。

1 2

# install runtime yum install nvidia-container-runtime

update docker daemon,在docker daemon中添加如下配置

daemon.json中添加如下配置,可选配置为"default-runtime": “nvidia”,如果不设置默认runtime,则默认使用runc,启动容器是需要指定–runtime=nvidia

1 2 3 4 5 6 7

"default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "/usr/bin/nvidia-container-runtime", "runtimeArgs": [] } }

安装NVIDIA device plugin,插件以daemonset方式部署,如果集群中既有CPU也有GPU节点,可以通过label筛选出GPU节点,无GPU的节点无需部署此程序

1 2 3 4

# For Kubernetes v1.8 kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.8/nvidia-device-plugin.yml # For Kubernetes v1.9 kubectl create -f https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v1.9/nvidia-device-plugin.yml

测试

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

apiVersion: v1 kind: Pod metadata: name: cuda-vector-add spec: restartPolicy: OnFailure containers: - name: cuda-vector-add # https://github.com/kubernetes/kubernetes/blob/v1.7.11/test/images/nvidia-cuda/Dockerfile image: "k8s.gcr.io/cuda-vector-add:v0.1" resources: limits: nvidia.com/gpu: 1 nodeSelector: GPU: "true" //测试时自己给对应GPU节点加了GPU=true的label kubectl create -f test.yaml

执行结果:

1 2 3 4 5 6 7 8 9 10 11

[root@vm10-0-13-17 ~]# kubectl get pods -a NAME READY STATUS RESTARTS AGE cuda-vector-add 0/1 Completed 0 3h nvidia-device-plugin-daemonset-pv6z8 1/1 Running 0 4h [root@vm10-0-13-17 ~]# kubectl logs cuda-vector-add [Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED Done

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-09-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • kubernetes设置
  • 测试
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档