OpenPai 安装文档
原链接为:https://github.com/microsoft/pai/blob/v0.14.0/docs/pai-management/doc/distributed-deploy.md
中文版:https://github.com/qzwlinux/OpenPai-Install
好文推荐:https://zhuanlan.zhihu.com/p/64061072
[TOC]
选择合适版本的Dev-box
sudo docker pull docker.io/openpai/dev-box:v0.14.0
运行Dev-box
sudo docker run -itd --name=dev-box openpai/dev-box:v0.14.0 bash
在dev-box中进入工作区
注意:docker运行-d表示后台运行,使用下面 exec 命令可以进入运行中的容器
sudo docker exec -it dev-box /bin/bash cd /pai
修改yaml文件
注意:以下操作是在容器内进行的,请勿退出容器
/pai/deployment/quick-start/quick-start-example.yaml # quick-start.yaml # (Required) Please fill in the IP address of the server you would like to deploy OpenPAI machines: - 192.168.1.11 # 官方说明至少三台主机,实际一台也可以(主机ip或docker中的ip) - 192.168.1.12 - 192.168.1.13 # (Required) Log-in info of all machines. System administrator should guarantee # that the username/password pair or username/key-filename is valid and has sudo privilege. ssh-username: siton ssh-password: siton # (Optional, default=None) the key file that ssh client uses, that has higher priority then password. #ssh-keyfile-path: <keyfile-path> # (Optional, default=22) Port number of ssh service on each machine. #ssh-port: 22 # (Optional, default=DNS of the first machine) Cluster DNS. #dns: <ip-of-dns> # (Optional, default=10.254.0.0/16) IP range used by Kubernetes. Note that # this IP range should NOT conflict with the current network. #service-cluster-ip-range: <ip-range-for-k8s>
生成配置文件
注意:生成配置文件也是在容器中pai目录下进行的,paictl.py 文件在容器 pai/ 目录下,即需要在pai/目录下执行下方命令
python paictl.py config generate -i /pai/deployment/quick-start/quick-start-example.yaml -o ~/pai-config -f
修改配置文件
注意:生成的配置文件也是在容器里,之前犯过错误退出容器去主机里面找pai-config文件夹,没找到
生成的文件在/root/pai-config中
layout.yaml
machine-sku: k80-node: mem: 40G #内存 gpu: type: Tesla K80 #GPU类型 (如果在自己虚拟机中尝试,没有GPU,直接删除GPU的配置即可) count: 4 #GPU个数 cpu: vcore: 24 #线程数 os: ubuntu16.04 #系统类型(18.04可能也行,建议不要尝试20.04) p100-node: mem: 20G gpu: type: Tesla P100 count: 2 cpu: vcore: 24 os: ubuntu16.04 machine-list: - hostname: Sitonholy #主机名 hostip: 192.168.199.10 #IP地址 machine-type: k80-node #显卡类型对应上面 - hostname: xxx hostip: yyy machine-type: p100-node
services-configuration.yaml
tag: v0.13.0 #修改pai版本 drivers: # set-nvidia-runtime: false # # You can set drivers version here. If this value is miss, default value will be 384.111 # # Current supported version list # # 384.111 # # 390.25 # # 410.73 # # 418.56 version: "410.73" #修改驱动版本
kubernetes-configuration.yaml
load-balance-ip: 192.168.31.211 #写主节点或负载IP docker-registry: docker.io/mirrorgooglecontainers #国内可以下载的镜像
部署k8s
cd /pai ./paictl.py cluster k8s-bootup -p ~/pai-config
检查k8s部署状态
运行以下命令检查k8s状态(也是在容器中执行)
kubectl get node kubectl get pod
上传openpai配置到k8s集群
./paictl.py config push -p ~/pai-config
部署pai集群
确认好集群在When Kubernetes is up and running
./paictl.py service start
查看集群
登录浏览器 http://masterip
可能需要
可能遇到的问题
(1)在容器 pai/目录下执行 “生成配置文件”那个命令,结果显示 Unable to connect to port 22 on or 172.17.0.1
尝试:禁用防火墙 或 重启ssh
禁用防火墙 命令:sudo ufw disable
查看防火墙状态:sudo ufw status
开启防火墙:sudo ufw enable
重启ssh:service sshd restart
常用docker命令
1 docker images 查看镜像信息列表 镜像是静态的
2 docker ps -a 查看运行中的所有容器
3 docker pull [images]:[version]从dockerhub拉取指定镜像
4 docker run -p 8000:80 -tdi --privileged [imageID] [command] 后台启动docker,并指定宿主机端口和docker映射端口。
-i:以交互模式运行容器,通常与 -t 同时使用;
-d:后台运行容器,并返回容器ID;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--privileged 容器将拥有访问主机所有设备的权限
通常情况下 [command] 填下 /bin/bash 即可。
特殊情况下,如需要在centos镜像中使用systemctl . 则应添加--privileged 并设置[command ]为 init。
5 当镜像通过run 启动后,便会载入到一个动态的container(容器)中运行,此时若需要进入终端交互模式:
sudo docker exec -it [containerID] /bin/bash
交互模式中,使用 ctrl+p+q退出交互 保持运行,使用 exit命令退出并停止容器。
6 在容器非交互模式下,通过docker start/stop 命令来启动/停止已部署的容器服务。
7 docker rm [containerID] 删除容器
8 docker rmi [imageID] 删除镜像
9 docker cp [YourHostFilePath] [containerID]:[DockerPath] 将宿主机内的指定文件传输至容器内部的指定地址。
镜像制作:
1 docker commit [containerID] [ImageName]:[Version] 将修改后的容器重新打包成镜像
2 docker commit -a "runoob.com" -m "my apache" a404c6c174a2 mymysql:v1 将容器a404c6c174a2 保存为新的镜像,并添加提交人信息和说明信息。
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
3 docker push [ImageID] [repertory_address]提交镜像到云仓库
其他操作
1、关闭OpenPAI服务
登录dev-box,输入以下命令:
cd /pai python paictl.py service stop
按提示输入cluster-id即可。
2、Linux内核兼容问题
发现将系统内核更新到4.4.0-148之后,显卡驱动镜像就开始报错了,包括最新的410.73版本。
目前官方的解决方法是在部署之前修改"/pai/src/drivers/deploy/drivers.yaml.template"文件,将第35行:
image: {{ cluster_cfg["cluster"]["docker-registry"]["prefix"] }}drivers-{{ cluster_cfg["drivers"]["version"] }}:{{ cluster_cfg["cluster"]["docker-registry"]["tag"] }}
修改为:
image: docker.io/openpai/drivers-418.30:v0.11.0
这个操作在目前最新的12.0上也完全,特别是后面的版本号不要变,保持11.0
整理资源,学习使用,非商业用途,侵删