安装rancher环境
1、安装docker
2、安装rancher
在Linux机器终端执行以下命令
sudo docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /var/lib/rancher:/var/lib/rancher rancher/rancher:v2.4.17
备注:最后 v2.4.17可替换为其他rancher版本
安装成功后,可以通过主机IP地址访问,例如:https:192.168.0.148
第一次登录需要创建用户名和密码
进入后可以首先在右下方语言栏 更改为简体中文
3、创建集群
1.选中全局后,在右侧添加集群处点击,开始新建RKE集群
2.选择自定义新建一个RKE集群
3.输入集群名称,并在下方进行详细设置,没有特殊要求的情况下,直接进入最下方点击“下一步”即可
4.根据构建的集群中的角色不同,勾选不同的角色,并将命令复制到相应的机器上执行
注意要打开高级选项进行IP地址的配置
主机注册成功
4.安装GPU插件暴露gpu
1.设置GPU Operator
使用GPU Operator库在Rancher中设置一个catalog。
使用Rancher Global上下文菜单,选择要安装到的集群:
2.然后使用工具菜单来查看应用商店列表。
3.点击添加应用商店按钮并且给其命名,然后添加url:https://nvidia.github.io/gpu-operator
选择Helm v3和集群范围。点击创建以添加应用到Rancher。
输入完毕后点击创建
4.现在使用左上角的Rancher上下文菜单以进入集群的“System”项目,这里添加了GPU Operator功能。
初始没有应用程序,点击启动按钮
下拉找到刚才配置的nvidia-gpu-operator
点击gpu-operator app,然后在页面底部点击启动。
启动之后可以发现,应用列表出现了gpu-operator
4.部署完毕后发现应用程序未正常工作
发现错误原因是镜像拉取不到,需要手动获取资源
根据镜像名称,去dockerhub上搜索
选择对应的版本pull到相关机器上
拉取完成后发现rancher成功启动了这个pod
对于其他的镜像 无法直接拉取 ,采用自己创建阿里云仓库的方式
关联GitHub仓库,选择海外机器构建
仓库创建完成后,构建规则
点击立即构建,一会之后构建成功了
在机器上登录阿里云仓库
但是在拉取阿里云仓库的镜像时依然报错,网上说是延时超出 也就是网络问题
查到解决办法时可以配置阿里云加速器
依次执行相关命令
再次登录阿里云仓库,尝试拉取
下面需要使用docker tag 更改镜像名称 与rancher所要求的一致
回到rancher集群发现相关的pod已经起来了
回到集群主机页面,可以看到相关主机已经添加了NFD的标签
5.安装jupyterhub
1.从集群页面的主菜单中选择项目/命名空间。
2.打开 项目:Default
3.点击部署服务进入部署界面
输入所部署的服务名称
选择相关的docker镜像
添加端口映射
这里使用了已经安装好深度学习环境的镜像,上传到了dockerhub的个人空间,可以直接拉取使用
添加端口监听,监听容器8000端口,选择TCP端口检查
最后在最下方点击 启动 即可部署完后服务
然后在default命名空间下可以查看已部署的相关服务
点击系统随机映射的接口,即可以看到相关服务的界面
6.在集群主机上起一个pod测试GPU
1.设置nvidia-docker作为默认容器进行时
1.vim /etc/docker/daemon.json
加入以下内容
{
"runtimes": {
"nvidia": {
"path": "nvidia-container-runtime",
"runtimeArgs": []
}
}
}
2.重启docker使配置生效
systemctl restart docker
2.配置kubectlconfig
使用kubectl可能会报错
The connection to the server localhost:8080 was refused - did you specify the right host or port?
解决方法:
第一步设置环境变量:
echo "export KUBECONFIG=/etc/kubernetes/admin.conf" >> /etc/profile
第二步使生效:
source /etc/profile
继续报错:Config not found: /etc/kubernetes/admin.conf
解决方案:将rancher上的kubectlfig文件复制到admin.conf
接下去kubectl命令报错的问题就被解决了
利用编写的yaml文件起一个pod在主机上
1.编写yaml文件
vim gpu_test.yaml
内容如下:
apiVersion: v1
kind: Pod
metadata:
name: ffmpeg-pod
spec:
nodeName: zstuxinxi06-z820
containers:
- name: ffmpeg-container
image: yaochuanbiao/jupyterhub_torch:v1
command: [ "/bin/bash", "-ce", "tail -f /dev/null" ]
resources:
limits:
nvidia.com/gpu: 1 # 请求分配 1个 GPU
2.创建pod
kubectl create -f gpu_test.yaml
3.进入pod
kubectl exec ffmpeg-pod -it -- bash
4.查看GPU情况
可以看到GPU已经在pod中暴露了