当前位置: 首页 > news >正文

k3s中使用GPU资源

前提是已经安装了nvidia驱动

一、安装nvidia-container-toolkit(推荐)

#复制一份docker配置文件,以防被覆盖
cp /etc/docker/daemon.json /etc/docker/daemon.json.bak
#安装NVIDIA Container Toolkitapt-get install nvidia-container-toolkit

二、配置容器运行时
#nvidia-ctk命令将会修改/etc/docker/daemon.json文件以便Docker可以使用nvidia容器运行时

nvidia-ctk runtime configure --runtime=docker

#实际上,上面nvidia-ctk命令是往/etc/docker/daemon.json文件追加了如下参数
 "runtimes": {
        "nvidia": {
            "args": [],
            "path": "nvidia-container-runtime"
        }
    }

三、修改docker默认运行时

docker要使用nvidia运行时才能正常使用gpu,但是k8s中kubelet需要调用docker,所以要将docker默认运行时设置为nvidia.

#查看当前docker默认运行时
docker info | grep -i 'Default Runtime'

#修改docker默认运行时,在daemon.json文件中添加默认运行时

vim /etc/docker/daemon.json 

{"default-runtime": "nvidia",		#设置默认运行时"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}}
}

四、重启dockers,并确认默认运行时生效

 systemctl restart docker
docker info | grep -i 'Default Runtime'

五、k3s安装nvidia-device-plugin插件(在master节点上安装)

#在master节点上安装
#k8s中要识别gpu资源,需要安装nvidia-device-plugin插件,注册分配gpu主要由device-plugin插件完成
#官网:https://github.com/NVIDIA/k8s-device-plugin
wget https://raw.githubusercontent.com/NVIDIA/k8s-device-plugin/v0.14.1/nvidia-device-plugin.yml
#vim nvidia-device-plugin.yml #该文件存在hostpath的卷,确认kubelet的安装路径正确
kubectl apply -f nvidia-device-plugin.yml
kubectl  get pod -n kube-system  | grep nvidia-device-plugin

在master节点上查看

六、pod中使用GPU

只需要下载能识别GPU的基础镜像,使用该基础镜像启动容器,使用该基础镜像pod中不需要配置 resources: limits: nvidia.com/gpu: 1 中也能正常识别GPU

docker pull nvidia/cuda:12.2.0-base-ubuntu22.04

参考链接:k8s中如何使用gpu、gpu资源讲解、nvidia gpu驱动安装_kubernetes 查看 节点 gpu-CSDN博客

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • CommonJS与ESModule标准
  • uni-app - - - - - 使用uview-plus详细步骤
  • 深度学习之 OpenCV 图像边缘检测算法解析及代码演示
  • 【mysql】mysql目录结构和源码和mysql基础练习
  • 008、架构_MDS
  • DNS解析:深入解析与实战应用
  • 【C语言】通讯录的实现(详解)
  • 网络技术基础
  • 基于VUE的校园二手物品交易管理系统的设计与实现 (含源码+sql+视频导入教程)
  • CTFhub通关攻略-SSRF篇【1-5关】
  • python网络爬虫(四)——实战练习
  • Qt22双缓冲机制
  • 网络模型及协议介绍
  • 使用 EasyExcel 高效读取大文件 Excel
  • Java内部类的应用分析
  • 「面试题」如何实现一个圣杯布局?
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • Android开源项目规范总结
  • Docker 笔记(2):Dockerfile
  • ECMAScript6(0):ES6简明参考手册
  • Java精华积累:初学者都应该搞懂的问题
  • js
  • Linux链接文件
  • overflow: hidden IE7无效
  • session共享问题解决方案
  • Vim 折腾记
  • 当SetTimeout遇到了字符串
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 学习使用ExpressJS 4.0中的新Router
  • 译自由幺半群
  • 在electron中实现跨域请求,无需更改服务器端设置
  • !$boo在php中什么意思,php前戏
  • # Panda3d 碰撞检测系统介绍
  • (4) openssl rsa/pkey(查看私钥、从私钥中提取公钥、查看公钥)
  • (8)STL算法之替换
  • (C++20) consteval立即函数
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (二刷)代码随想录第15天|层序遍历 226.翻转二叉树 101.对称二叉树2
  • (七)Knockout 创建自定义绑定
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • (转载)虚函数剖析
  • .NET CF命令行调试器MDbg入门(二) 设备模拟器
  • .net core webapi 大文件上传到wwwroot文件夹
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET业务框架的构建
  • @Transactional事务注解内含乾坤?
  • [ 代码审计篇 ] 代码审计案例详解(一) SQL注入代码审计案例
  • [14]内置对象
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C++]——继承 深继承
  • [C++初阶]string类的详解
  • [GUET-CTF2019]encrypt
  • [Hadoop in China 2011] 蒋建平:探秘基于Hadoop的华为共有云
  • [HarmonyOS]第一课:从简单的页面开始