官方文档
https://openpai.readthedocs.io/zh_CN/latest/manual/cluster-admin/installation-guide.html#_2
集群规划
根据OpenPAI的要求,至少需要三台机器用于构建。
master 192.168.0.131
worker 192.168.0.130
dev 192.168.0.132
基础环境准备
操作系统
官网目前仅支持ubuntu,官方推荐 16.04,这里测试用的 ubuntu20.04
root密码设置(每台)
建议大家都使用root来进行操作,避免各种权限问题,也可以使用具有sudo权限的用户
sudo passwd root
网络设置
根据自己具体环境设置
ip | 类型 | 硬件要求 | 软件要求 |
192.168.0.130 | dev | 它可以与所有其他机器(master和worker机器)通信。 它是独立于master机器和worker机器之外的一台机器。 它可以访问Internet。尤其是可以访问Docker Hub。部署过程会从Docker Hub拉取Docker镜像。 | 1、Ubuntu 16.04 (18.04、20.04应该可用,但没有经过完整测试) 2、SSH服务已开启。 可以免密登录所有master和worker机器。 Docker已被正确安装。 |
192.168.0.131 | master | 1、 至少40GB内存。 2、必须有固定的局域网IP地址(LAN IP address),且可以和其他所有机器通信 3、可以访问Internet。尤其是可以访问Docker Hub。部署过程会从Docker Hub拉取Docker镜像。 | 1、Ubuntu 16.04 (18.04、20.04应该可用,但没有经过完整测试) 2、SSH服务已开启。 和所有worker机器有同样的SSH用户名和密码,且该SSH用户有sudo权限。 3、Docker已被正确安装。 NTP已被成功开启。您可以用命令apt install ntp来检查。 它是OpenPAI的专用服务器。OpenPAI管理它的所有资源(如CPU、内存、GPU等)。如果有其他工作负载,则可能由于资源不足而导致未知问题 |
192.168.0.132 | worker |
安装Docker
由于Open PAI是基于K8s来进行实现的,所以要先安装Docker
更新操作系统配置(每台)
这一步是预防使用apt-get install update操作失败
vim /etc/apt/sources.list
直接注释掉红框这一行
执行安装Docker的命令(每台)
apt-get remove docker docker-engine docker-ce docker.io
apt-get update
apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install -y docker-ce
systemctl start docker
安装nvidia-container-runtime(master、worker)
安装后重启一下docker
curl -s -L https://nvidia.github.io/nvidia-container-runtime/gpgkey | \
sudo apt-key add -
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-container-runtime/$distribution/nvidia-container-runtime.list | \
sudo tee /etc/apt/sources.list.d/nvidia-container-runtime.list
apt-get update
apt-get install nvidia-container-runtime
添加阿里云镜像源地址(每台)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.cn-hangzhou.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
配置Master机器(master)
在基础服务的基础上master机器上面只需要单独配置NTP即可
apt install ntp
安装Open PAI
根据官网步骤来即可,里面超级多的坑,我们来慢慢填平,下面为官网地址 https://openpai.readthedocs.io/zh_CN/latest/manual/cluster-admin/installation-guide.html
克隆Open PAI项目
在dev box机器上,使用下面的命令来克隆OpenPAI的repo:
cd ~
git clone https://github.com/microsoft/pai.git
如果无法下载可以使用下面国内镜像地址下载
git clone https://hub.nuaa.cf/microsoft/pai.git
cd pai
checkout到某一个tag,来选择需要安装的OpenPAI版本:
git checkout v1.8.0
配置config文件
vim /root/pai/contrib/kubespray/config/config.yaml
官网指南坑:官方建议的配置方式,其中gcr.azk8s.cn以及shaiictestblob01.blob.core.chinacloudapi.cn早已经停止维护,官方还没更新新的地址,造成报错无法拉取到镜像!!!
经过无数次试错,使用了阿里云的镜像和docker hub的镜像进行搭配,直接拷贝过去修改用户名密码即可,你们得到这个配置文件就已经成功一半了。
user: root
password: your password
docker_image_tag: v1.8.0
gcr_image_repo: "registry.cn-hangzhou.aliyuncs.com"
kube_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers"
openpai_kubespray_extra_var:
pod_infra_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/pause-{{ image_arch }}"
dnsautoscaler_image_repo: "docker.io/mirrorgooglecontainers/cluster-proportional-autoscaler-{{ image_arch }}"
tiller_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-helm/tiller"
registry_proxy_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/kube-registry-proxy"
metrics_server_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/metrics-server-amd64"
addon_resizer_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/addon-resizer"
dashboard_image_repo: "registry.cn-hangzhou.aliyuncs.com/google_containers/kubernetes-dashboard-{{ image_arch }}"
配置layout文件
vim /root/pai/contrib/kubespray/config/layout.yaml
我使用的是虚拟机所有没有gpu因此worker使用的是cpu,如果大家有gpu可以参考layout.yaml原始模板,以下为根据我的机器配置修改后的模板
machine-sku:
master-machine: # define a machine sku
# the resource requirements for all the machines of this sku
# We use the same memory format as Kubernetes, e.g. Gi, Mi
# Reference: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/#meaning-of-memory
mem: 40Gi
cpu:
# the number of CPU vcores
vcore: 8 # 如果是虚拟机建议分配8核
cpu-machine:
mem: 20Gi
cpu:
vcore: 8 # 如果是虚拟机建议分配8核
machine-list:
- hostname: master # name of the machine, **do not** use upper case alphabet letters for hostname
hostip: 192.168.0.131
machine-type: master-machine # only one master-machine supported
pai-master: "true"
- hostname: worker
hostip: 192.168.0.130
machine-type: cpu-machine
pai-worker: "true"
为集群安装K8s
Open PAI提供了一键安装的脚本,直接执行这个脚本即可,因为我们配置了config.yaml因此会从docker hub以及阿里云下载,请保证机器能正常访问这两个网站,除此之外安装过程中会从github上面拉取文件。
如果访问github经常无法拉取文件,可以修改刚才 /pai/contrib/kubespray/script# cat environment.sh
将
git clone -b release-2.11 https://github.com/kubernetes-sigs/kubespray.git ${HOME}/pai-deploy/kubespray
修改为
git clone -b release-2.11 https://hub.nuaa.cf/kubernetes-sigs/kubespray.git ${HOME}/pai-deploy/kubespray
即可下载,修改完毕执行下面的脚本
cd /root/pai/contrib/kubespray
/bin/bash quick-start-kubespray.sh -v
控制台正常退出代表安装成功,如果不是正常退出请查看报错信息,然后根据报错信息去修改,我出现的问题是镜像拉取失败,经过无数次试错后使用上面的config.yaml则不会再出错。
在K8s的基础上部署OpenPAI组件
跟部署k8s一样,也是一键部署,只要网络能访问阿里云镜像源和github同样没有任何问题,这个过程要下载很多pod 比较慢,耐心等即可
cd /root/pai/contrib/kubespray
/bin/bash quick-start-service.sh
部署完成后会出现以下信息,到这里眼泪已经止不住了!
登录OpenPAI
http://192.168.0.130 master节点ip
用户名:admin
密码:admin-password
集群所使用到的镜像
master节点
worker节点
集群安装建议
解决网络访问github总是失败
安装过程发现从github下载文件出现超时,建议在master和worker都配置一个vpn保证能正常访问github
如果没有就将 github 地址https://github.com/ 替换成国内镜像地址 https://hub.nuaa.cf
解决部署k8s集失败重试还需要执行git clone
当部署k8s的过程中出现错误,重新执行下面命令部署发现又会从github重复下载pai-deploy这个文件夹
/bin/bash quick-start-kubespray.sh -v
解决方法,注释掉每次都重新下载这两行代码
vim /root/pai/contrib/kubespray/script/environment.sh
#sudo rm -rf ${HOME}/pai-deploy/kubespray
#git clone -b release-2.11 https://github.com/kubernetes-sigs/kubespray.git ${HOME}/pai-deploy/kubespray
解决下载过程中无法下载下来的文件
在部署过程中我就出现cni-plugins-linux-amd64-v0.8.1.tgz 和 calicoctl 这两个文件下载不下来,可以单独下载,然后传到报错所输出的路径下面
wget https://hub.nuaa.cf/containernetworking/plugins/releases/download/v0.8.1/cni-plugins-linux-amd64-v0.8.1.tgz
wget https://hub.nuaa.cf/projectcalico/calicoctl/releases/download/v3.7.3/calicoctl-linux-amd64
(如果名字不一样,下载完毕后按照报错提示修改文件名 mv calicoctl-linux-amd64 calicoctl)
解决下载镜像慢的问题
镜像下载下来后,可以打包成本地文件,后续安装直接通过docker load -i 直接加载到Docker
打包命令,以master机器上的镜像为例,worker同理
docker save $(docker images | grep -v REPOSITORY | awk 'BEGIN{OFS=":";ORS=" "}{print $1,$2}') -o openpai_master.tar.gz
在新master加载打包好的镜像命令,worker同理
docker load -i openpai_master.tar.gz