| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 腾讯vCUDA(gpu-manager)部署 -> 正文阅读 |
|
[开发工具]腾讯vCUDA(gpu-manager)部署 |
官网:https://github.com/tkestack/gpu-manager 先夸赞一下腾讯的开源精神,再吐槽一下,官方README写的真是过于随意了。踩了一堆坑,终于部署并测试成功了。下面尽可能详细的记录一下全流程。 这次用的k8s集群是用kubeadm搭建的,在部署gpu-admission自定义scheduler的时候也有些不同,后面会详细介绍。 0、配置go环境0.1 go安装参考:https://www.runoob.com/go/go-environment.html 0.2 go代理配置(中国特色步骤,墙外可忽略)
在文件最后添加如下两行:
1、部署gpu-admission用gpu-manager前,需要先启动并正确配置gpu-admission。 官网:https://github.com/tkestack/gpu-admission 1.1 下载源码
1.2 编译①进入源码目录
②编译
1.3 运行
其中<your kubeconfig>是k8s的config文件,就是每次kubectl命令会读取的那个配置文件。通常目录是/etc/kubernetes/admin.conf。 正确输出如下:
1.4 自定义调度器?①准备自定义调度器文件 创建一个scheduler-policy-config.json的调度器文件:
其中<Your Path>是一个任意的目录,只要后面步骤里的<Your Path>和这里保持一致就行。 在这个json文件里写入如下信息(内容来自官方github步骤2.2):
其中"urlPrefix": "http://127.0.0.1:10252/scheduler"中的IP地址和端口号,如果有特殊需求则按照需求更换,没有特殊需求这样写就可以了。 后面的步骤,如果是kubeadm安装的k8s就看1.4.1分支,如果是其他方式安装的k8s就看1.4.2分支。 1.4.1 kubeadm部署的k8skubeadm部署的k8s集群,调度器是以pod形式运行的,kubelet会一直监听manifest文件的修改,发现文件被修改后会自动重启pod以加载新的配置。因此,这里我们只需要修改调度器的manifest文件即可。 ②先复制一份调度器的manifest文件备份。
③修改文件内容
在command关键字下面加两行内容:
修改前是这样的:
修改后是这样的:
保存退出后就自动生效了。 可以用如下命令确定一下:
输出中找到一个名字为 kube-scheduler-XXX 的pod,看后面对应的AGE项,是不是刚刚启动。如果刚启动过,代表调度器配置已经更新。 1.4.2 其他方式部署的k8s(gpu-admission官方步骤2.2)非kubeadm部署的k8s是带有kube-scheduler工具的,使用kube-scheduler工具直接部署配置文件即可。具体操作如下。 ②? 执行命令
2、部署gpu-manager2.1 下载源码
2.2 编译源码
2.3 构建gpu-manager镜像① 修改源码(中国特色步骤,墙外跳过该步)
找到如图所示第18行处 ?添加内容:
保存退出。 ②? 构建镜像
构建完成后用如下命令查看是否生成了一个名为thomassong/gpu-manager的容器:
我这里构建完的镜像tag是1.1.4,这个tag要记一下,后面会用到,用的的时候用*tag表示。(主要是官方gpu-manager.yaml里的tag和make img中的tag没匹配,需要自己改一下,也许后面官方会修正) ③ 创建资源
④ 打标签 所谓的打标签,就是找一个节点来运行gpu-manager。我这里遇见了一个问题是给master打标签没用,只能找一个非master的节点来打标签。也就是gpu-manager不能运行在master上。
其中<node>是想要运行gpu-manager的k8s节点名称。 这里注意一下,之前步骤②中构建的镜像要保证在你所选择即将运行gpu-manager的节点上有才行。如果之前在其他节点构建的镜像,要迁移到<node>中来。 ⑤查看镜像tag是否匹配 还记得步骤②中的*tag吧。这里要看一下gpu-manager.yaml文件中,关键字image后面的镜像tag是不是和*tag一致,如下图。如果不一致则修改成*tag。我这里是修改成了1.1.4的。 ⑥ 启动gpu-manager
此时查看集群pod,kube-system命名空间下,有一个名为gpu-manager-daemonset-XXX的pod启动。 查看<node>节点信息发现,有tencent.com/vcuda-core,?tencent.com/vcuda-memory 资源存在,如下图。 至此gpu-manager部署完成! 3、测试这里我自己准备了一个paddle的镜像,并配套写了一个提交任务的yaml文件提供测试。镜像使用cifar数据集,可自动下载,非常方便。 测试思路:测试过程各位可自行修改yaml文件中tencent.com/vcuda-core,?tencent.com/vcuda-memory资源的数值,先调节的大一些,看容器是否正常Running,容器log是否正确。都正确无误后,给tencent.com/vcuda-memory改的非常小,容器运行时GPU显存溢出,程序报错,容器退出,表明vcuda生效。 ① 下载镜像
② 提交任务
③ 观察 集群中名为vcuda的pod是否正常运行,并查看其log是否符合预期。 查看pod运行状态命令:
查看log命令:
|
|
|
上一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/22 13:35:23- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |