根据OpenPAI的要求,至少需要三台机器用于构建。
master 192.168.0.131
worker 192.168.0.130
dev 192.168.0.132
官网目前仅支持ubuntu,最好是用官方推荐的ubuntu 16.04
建议大家都使用root来进行操作,避免各种权限问题,也可以使用具有sudo权限的用户
sudo passwd root
根据自己具体环境设置
auto ens33
iface ens33 inet static
address 192.168.0.131
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
auto ens33
iface ens33 inet static
address 192.168.0.130
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
auto ens33
iface ens33 inet static
address 192.168.0.130
netmask 255.255.255.0
gateway 192.168.0.1
dns-nameservers 8.8.8.8 8.8.4.4
设置完网络后需要进行刷新
sudo /etc/init.d/networking restart
此时三台机器就可以在同一个局域网内相互访问了!
apt-get install openssh-server
vim /etc/ssh/sshd_config
注释掉下面第一行,并添加下面第二行
# PermitRootLogin prohibit-password
PermitRootLogin yes
sudo service ssh start
由于Open PAI是基于K8s来进行实现的,所以要先安装Docker
这一步是预防使用apt-get install update操作失败
vim /etc/apt/sources.list
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
安装后重启一下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机器上面只需要单独配置NTP即可
apt install ntp
根据官网步骤来即可,里面超级多的坑,我们来慢慢填平,下面为官网地址
https://openpai.readthedocs.io/zh_CN/latest/manual/cluster-admin/installation-guide.html
在dev box机器上,使用下面的命令来克隆OpenPAI的repo:
cd ~
git clone https://github.com/microsoft/pai.git
cd pai
checkout到某一个tag,来选择需要安装的OpenPAI版本:
git checkout v1.8.0
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 }}"
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"
Open PAI提供了一键安装的脚本,直接执行这个脚本即可,因为我们配置了config.yaml因此会从docker hub以及阿里云下载,请保证机器能正常访问这两个网站,除此之外安装过程中会从github上面拉取文件。
cd /root/pai/contrib/kubespray
/bin/bash quick-start-kubespray.sh -v
控制台正常退出代表安装成功,如果不是正常退出请查看报错信息,然后根据报错信息去修改,我出现的问题是镜像拉取失败,经过无数次试错后使用上面的config.yaml则不会再出错。
跟部署k8s一样,也是一键部署,只要网络能访问阿里云镜像源和github同样没有任何问题
cd /root/pai/contrib/kubespray
/bin/bash quick-start-service.sh
http://192.168.0.130 master节点ip
用户名:admin
密码:admin-password
安装过程发现从github下载文件出现超时,建议在master和worker都配置一个保证能正常访问github
当部署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这个文件下载不下来,可以单独下载,然后传到报错所输出的路径下面
镜像下载下来后,可以打包成本地文件,后续安装直接通过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