RKE搭建K8S并部署阿里GPU Sharing实现GPU共享

1,320次阅读
没有评论

本文所有内容基于Docker,k8s集群由rancher提供的rke工具搭建(后文中称为rancher版本k8s,也适用于使用RancherUI搭建的集群),GPU共享技术采用了阿里GPU Sharing。使用了其他容器技术的本文不一定适用,或者使用了kubeadm进行k8s搭建的可能有部分不适用,kubeadm搭建的k8s在部署GPU Sharing时网上可查的资料和官网资料都很多,而rancher版本的k8s和原生kubernetes有所差别,后面会夹带一些具体说明。

准备工作
++如果你已经有了Rancher版本的K8S集群,则直接从「k8s集群搭建」开始看++

安装docker和nvidia-docker2
安装Docker,直接执行官方安装脚本安装:

curl -fsSL https://get.docker.com | bash -s docker –mirror Aliyun
安装完成后,使用Docker version查看版本,目前安装的话一般为20.10版本,能成功查询版本说明安装成功。

安装之后,执行以下命令设置docker自启动:

systemctl start docker
systemctl enable docker

nvidia-docker2安装参见上一篇文章《Ubuntu实现K8S调度NVIDIA GPU小记》安装nvidia-docker安装部分。
在安装完之后,我们需要修改docker默认的运行时,使其支持nvidia的调度,编辑/etc/docker/daemon.json配置(不存在则新建):

{
“runtimes”: {
“nvidia”: {
“path”: “/usr/bin/nvidia-container-runtime”,
“runtimeArgs”: []
}
},
“default-runtime”: “nvidia”,
“exec-opts”: [“native.cgroupdriver=systemd”]
}

其中:runtimes参数是定义运行时,这里定义了一个名为nvidia的运行时环境,default-runtime表示指定默认的运行时为刚刚定义的nvidia。

最后一句”exec-opts”: [“native.cgroupdriver=systemd”]的作用是,因为K8S的文件驱动为cgroupfs,而docker的文件驱动为systemd,两者不同会导致镜像无法启动,因此需要将K8S文件驱动也指定为systemd。

GPU驱动
GPU驱动安装和简单调度参见上一篇文章《Ubuntu实现K8S调度NVIDIA GPU小记》英伟达驱动部分。

下载rke工具
下载rke之前,需要确定你是否需要指定版本的k8s集群或者指定版本的rancher,在github中rancher仓库中,可以在对应的rancher版本中查看到其支持的k8s版本和所需的rke工具版本,相反,你确定了需要的k8s版本也可以反推rancher版本和rke版本。

我这里的需求是使用rancher2.3.8,对应的rke版本为1.0.9,rke-1.0.9对应的k8s版本如下:

这里我k8s版本采用的是v1.17.6-rancher2-1版本。

确定了各种工具版本之后,下载对应的工具,此处链接根据需求更换,不是一成不变的:

下载rke

wget https://github.com/rancher/rke/releases/download/v1.0.9/rke_linux-amd64

配置rke

mv rke_linux-amd64 rke
chmod 755 rke
mv rke /usr/local/bin/

验证

rke –version

k8s集群搭建
rke需要根据yaml文件来进行集群的创建,我这里使用的是单节点,首先来创建rke集群文件目录:

mkdir rke-config
cd rke-config

以下是rke集群文件的内容,使用vim 进行编辑,vim cluster.yml,如果你有现有的集群,就对你的集群yaml进行编辑,在services下添加scheduler节点的所有内容即可(也适用于直接使用rancher创建的集群,只不过是通过rancher-ui进行操作):

nodes:

  • address: 192.168.1.102 user: root role:
    • controlplane
    • etcd
    • worker
      services:
      scheduler:
      extra_args:
      address: 0.0.0.0
      kubeconfig: /etc/kubernetes/ssl/kubecfg-kube-scheduler.yaml
      leader-elect: ‘true’
      policy-config-file: /etc/kubernetes/ssl/scheduler-policy-config.json
      profiling: ‘false’
      v: ‘2’
      kubernetes_version: “v1.17.6-rancher2-1”
      cluster_name: “aliyun”

nodes配置节点是配置集群的主机,此处为单节点,因此角色需要包含control、etcd和worker三种。services下的scheduler节点是指定调度的相关配置,这里就是一个rancher版本k8s和原生k8s不一样的地方,原生k8s中,kube-scheduler作为一个可执行文件存在,而在rancher中是一个容器,scheduler节点部分的内容可以通过docker inspect kube-scheduler查看到,这里只需要复制过来并添加policy-config-file: /etc/kubernetes/ssl/scheduler-policy-config.json即可。

我们从github上获取scheduler-policy-config.json,放到/etc/kubernetes/ssl/下,如果有多个master节点,则每个master节点都需要执行:

cd /etc/kubernetes/ssl/
curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/scheduler-policy-config.json

然后,构建集群,需要进入到上一步创建的cluster.yml的目录下:

rke up

如果提示docker版本不支持,则添加参数忽略版本即可:

rke up –ignore-docker-version

待执行完毕,此时集群就搭建好了,之后进行如下配置:

mkdir ~/.kube

kube_config_cluster.yml文件为rke up创建集群时在当前目录生成

cp kube_config_cluster.yml ~/.kube
mv ~/.kube/kube_config_cluster.yml ~/.kube/config

接下来安装kubectl来管理集群:

curl -LO “https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl”

配置kubectl

chmod 755 ./kubectl
mv ./kubectl /usr/local/bin/kubectl

查看版本

kubectl version

使用kubectl查看pod:

查看pod

kubectl get pods

自此,k8s集群搭建完毕,接下来做GPU共享配置

GPU Sharing部署
部署GPU共享调度插件gpushare-schd-extender:
cd /tmp/
curl -O https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/config/gpushare-schd-extender.yaml

因为是使用单节点,因此需要能够在master上进行调度,所以需要在gpushare-schd-extender.yaml中将

nodeSelector:

node-role.kubernetes.io/master: “”

这两句删除,使k8s能够在master上进行调度

kubectl create -f gpushare-schd-extender.yaml

部署设备插件gpushare-device-plugin
如果你的集群不是新搭建的,之前如果已经安装了nvidia-device-plugin,需要将其删除,rancher版本的k8s可以使用kubectl get pods看到nvidia-device-plugin相应的pod,删除即可。然后部署设备插件gpushare-device-plugin:

cd /tmp/
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-rbac.yaml
kubectl create -f device-plugin-rbac.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-device-plugin/master/device-plugin-ds.yaml

默认情况下,GPU显存以GiB为单位,若需要使用MiB为单位,需要在这个文件中,将–memory-unit=GiB修改为–memory-unit=MiB

kubectl create -f device-plugin-ds.yaml

为GPU节点打标签
为了将GPU程序调度到带有GPU的服务器,需要给服务打标签gpushare=true:

查看所有节点

kubectl get nodes

选取GPU节点打标

kubectl label node gpushare=true

例如我这里主机名为master,则打标语句为:

kubectl label node master gpushare=true

更新kubectl可执行程序:
wget https://github.com/AliyunContainerService/gpushare-device-plugin/releases/download/v0.3.0/kubectl-inspect-gpushare
chmod u+x kubectl-inspect-gpushare
mv kubectl-inspect-gpushare /usr/local/bin

然后执行kubectl inspect gpushare,若能看到GPU信息,则代表安装成功:

可以看到,此时GPU显存总数为7981MiB,使用为0。

测试
接下来进行测试,我们获取阿里云的示例程序:

wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/1.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/2.yaml
wget https://raw.githubusercontent.com/AliyunContainerService/gpushare-scheduler-extender/master/samples/3.yaml

这四个文件分别是四个需要调度GPU的示例容器的yaml,直接使用kubectl create -f x.yaml启动即可,这些文件中调度的GPU都是以G为单位的,这里我修改了调度数值,调度数值的参数名为:aliyun.com/gpu-mem,第一个为128,第二个是256,第三个是512,逐个启动,观察GPU占用率:
启动第一个:

启动第二个:

启动第三个:

至此,rancher版本k8s配置GPU共享成功。

正文完
可以使用微信扫码关注公众号(ID:xzluomor)
post-qrcode
 0
评论(没有评论)

文心AIGC

2023 年 6 月
 1234
567891011
12131415161718
19202122232425
2627282930  
文心AIGC
文心AIGC
人工智能ChatGPT,AIGC指利用人工智能技术来生成内容,其中包括文字、语音、代码、图像、视频、机器人动作等等。被认为是继PGC、UGC之后的新型内容创作方式。AIGC作为元宇宙的新方向,近几年迭代速度呈现指数级爆发,谷歌、Meta、百度等平台型巨头持续布局
文章搜索
热门文章
潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026

潞晨尤洋:日常办公没必要上私有模型,这三类企业才需要 | MEET2026 Jay 2025-12-22 09...
面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25

面向「空天具身智能」,北航团队提出星座规划新基准丨NeurIPS’25 鹭羽 2025-12-13 22:37...
商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1

商汤Seko2.0重磅发布,合作短剧登顶抖音AI短剧榜No.1 十三 2025-12-15 14:13:14 ...
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了 一水 2025-12-12 13:56:19 ...
最新评论
ufabet ufabet มีเกมให้เลือกเล่นมากมาย: เกมเดิมพันหลากหลาย ครบทุกค่ายดัง
tornado crypto mixer tornado crypto mixer Discover the power of privacy with TornadoCash! Learn how this decentralized mixer ensures your transactions remain confidential.
ดูบอลสด ดูบอลสด Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Pretty! This has been a really wonderful post. Many thanks for providing these details.
ดูบอลสด ดูบอลสด Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
Obrazy Sztuka Nowoczesna Obrazy Sztuka Nowoczesna Thank you for this wonderful contribution to the topic. Your ability to explain complex ideas simply is admirable.
ufabet ufabet Hi there to all, for the reason that I am genuinely keen of reading this website’s post to be updated on a regular basis. It carries pleasant stuff.
ufabet ufabet You’re so awesome! I don’t believe I have read a single thing like that before. So great to find someone with some original thoughts on this topic. Really.. thank you for starting this up. This website is something that is needed on the internet, someone with a little originality!
ufabet ufabet Very well presented. Every quote was awesome and thanks for sharing the content. Keep sharing and keep motivating others.
热评文章
跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026

跳过“逐字生成”!蚂蚁集团赵俊博:扩散模型让我们能直接修改Token | MEET2026 一水 2025-1...
10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了

10亿美元OpenAI股权兑换迪士尼版权!米老鼠救Sora来了 一水 2025-12-12 13:56:19 ...
IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别

IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别

IDC MarketScape: 容联云位居“中国AI赋能的联络中心”领导者类别 量子位的朋友们 2025-1...