安装要求

OpenPAI的部署要求至少有3台独立的机器:一台dev box机器、一台master机器和一台worker机器。

dev box机器在安装、维护和卸载期间,通过SSH控制master机器和worker机器,应该指定唯一一台dev box机器。master机器用于运行核心Kubernetes组件和核心OpenPAI服务,目前,只能指定唯一一台master机器。建议您使用纯CPU机器作为dev box机器和master机器。另外,所有的worker机器都应该有GPU,并正确安装GPU驱动程序。

  • dev box机器

    • 硬件要求

      • 它可以与所有其他机器(master和worker机器)通信。
      • 它是除了master机器和worker机器外的一台独立计算机。
    • 软件要求
      • Ubuntu 16.04 (18.04应该可用,但没有经过完整测试)
      • SSH服务已开启。
      • 可以免密登录所有master和worker机器。
      • Docker已被正确安装。您可以用命令docker --version来检查。如果您的Docker未被正确安装,可以参考Docker的安装指南。
  • master机器
    • 硬件要求

      • 至少40GB内存。
      • 必须有固定的IP地址,且可以和其他所有机器通信。
      • 可以访问Internet。尤其是可以访问Docker Hub。部署过程会从Docker Hub拉取Docker镜像。
    • 软件要求
      • Ubuntu 16.04 (18.04应该可用,但没有经过完整测试)
      • SSH服务已开启,和所有Worker机器有同样的SSH用户名和密码,且该SSH用户有sudo权限。
      • NTP已被成功开启。 您可以用命令apt install ntp来检查。
    • 其他要求
      • 它是OpenPAI的专用服务器。OpenPAI管理它的所有CPU、内存和GPU资源。如果有其他工作负载,则可能由于资源不足而导致未知问题。
  • worker机器:
    • 硬件要求

      • 至少16GB内存
      • 必须有至少一块GPU。
      • 必须有固定的IP地址,且可以和其他所有机器通信。
      • 可以访问Internet。尤其是可以访问Docker Hub。部署过程会从Docker Hub拉取Docker镜像。
    • 软件要求
      • Ubuntu 16.04 (18.04应该可用,但没有经过完整测试)
      • SSH服务已开启,所有master和worker机器有同样的SSH用户名和密码,且该SSH用户有sudo权限。
      • Docker已被正确安装。您可以用命令docker --version来检查。如果您的Docker未被正确安装,可以参考Docker的安装指南。
      • GPU驱动已被正确安装。 您可以用这个命令来检查。 如果您的GPU驱动未被正确安装,可以参考如何安装GPU驱动。 如果您对安装哪个版本的GPU驱动有疑问,可以阅读这个文档。
      • nvidia-container-runtime或其他device runtime已被正确安装,并且被设置为Docker的默认runtime。请在docker-config-file里进行设置。
        • 您可以用命令sudo docker run nvidia/cuda:10.0-base nvidia-smi来检查这一项。如果该命令成功打出当前可用的显卡个数,就说明设置是没问题的。
        • 如果它未被正确安装,请参考如何安装nvidia container runtime。

dev box机器

1. SSH免密登录配置

1.在本地机器上使用ssh-keygen产生公钥私钥

ssh-keygen

一路回车即可。

2.ssh-copy-id将公钥复制到远程机器中

ssh-copy-id -i ~/.ssh/id_rsa.pub remote-hostname@remote-ip
2. Docker安装

1.卸载旧版本

旧版本的 Docker 称为 docker 或者 docker-engine,使用以下命令卸载旧版本:

$ sudo apt-get remove docker \docker-engine \docker.io

2.使用 APT 安装

由于 apt源使用 HTTPS 以确保软件下载过程中不被篡改。因此,我们首先需要添加使用 HTTPS 传输的软件包以及 CA 证书。

$ sudo apt-get update$ sudo apt-get install \apt-transport-https \ca-certificates \curl \gnupg-agent \software-properties-common

鉴于国内网络问题,强烈建议使用国内源,官方源请在注释中查看。
为了确认所下载软件包的合法性,需要添加软件源的 GPG 密钥。

$ curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -# 官方源
# $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

然后,我们需要向 sources.list 中添加 Docker 软件源

$ sudo add-apt-repository \"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \$(lsb_release -cs) \stable"# 官方源
# $ sudo add-apt-repository \
#    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
#    $(lsb_release -cs) \
#    stable"

以上命令会添加稳定版本的 Docker APT 镜像源,如果需要测试版本的 Docker 请将 stable 改为 test。

安装 Docker:更新 apt 软件包缓存,并安装 docker-ce

$ sudo apt-get update$ sudo apt-get install docker-ce docker-ce-cli containerd.io

3.使用脚本自动安装

在测试或开发环境中 Docker 官方为了简化安装流程,提供了一套便捷的安装脚本,Ubuntu 系统上可以使用这套脚本安装,另外可以通过 --mirror 选项使用国内源进行安装:
若你想安装测试版的 Docker, 请从 test.docker.com 获取脚本

# $ curl -fsSL test.docker.com -o get-docker.sh
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
# $ sudo sh get-docker.sh --mirror AzureChinaCloud

执行这个命令后,脚本就会自动的将一切准备工作做好,并且把 Docker 的稳定(stable)版本安装在系统中。

4.启动 Docker

$ sudo systemctl enable docker
$ sudo systemctl start docker

4.1 建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

建立 docker 组:

$ sudo groupadd docker

将当前用户加入 docker 组:

$ sudo usermod -aG docker $USER

退出当前终端并重新登录,进行如下测试。

4.2 测试 Docker 是否安装正确

$ docker run hello-worldUnable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
d1725b59e92d: Pull complete
Digest: sha256:0add3ace90ecb4adbf7777e9aacf18357296e799f81cabc9fde470971e499788
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

若能正常输出以上信息,则说明安装成功。

5.代理配置

在执行docker pull时,是由守护进程dockerd来执行。 因此,代理需要配在dockerd的环境中。 而这个环境,则是受systemd所管控,因此实际是systemd的配置。

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo touch /etc/systemd/system/docker.service.d/http-proxy.conf

在这个http-proxy.conf文件(可以是任意*.conf的形式)中,添加以下内容:

[Service]
Environment="HTTP_PROXY=http://proxy.example.com:8080/"
Environment="HTTPS_PROXY=http://proxy.example.com:8080/"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

其中,proxy.example.com:8080要换成可用的免密代理。

dockerd代理的修改比较特殊,它实际上是改systemd的配置,因此需要重载systemd并重启dockerd才能生效。

sudo systemctl daemon-reload
sudo systemctl restart docker

master机器

1.开启SSH服务,且该SSH用户有sudo权限。

2.开启NTP

apt install ntp

worker机器

1.开启SSH服务,且该SSH用户有sudo权限。

2.安装Docker

参考dev box的Docker安装步骤,可用docker --version来检查。

3.GPU驱动安装

4.nvidia-container-runtime安装

GPU驱动安装
1. 前期工作

1.1 禁用nouveau

ubuntu 16.04默认安装了第三方开源的驱动程序nouveau,安装nvidia显卡驱动首先需要禁用nouveau,不然会碰到冲突的问题,导致无法安装nvidia显卡驱动。指令如下

sudo gedit /etc/modprobe.d/blacklist.conf 打开文件,在最后添加如下两行:

blacklist nouveau
options nouveau modeset=0

1.2 更新系统修改

sudo update-initramfs -u,输入指令后重启系统,确保到位。

1.3 验证nouveau是否已禁用

lsmod | grep nouveau
如果没有出现任何东西就是成功了。

2. 下载驱动文件并指令安装

2.1 在英伟达的官网上查找你自己电脑的显卡型号然后下载相应的驱动:https://www.geforce.cn/drivers,下载后的run文件拷贝至home目录下,文件为:NVIDIA-Linux-x86_64-xxx.run

2.2 在ubuntu下按ctrl+alt+f1进入命令行界面,此时需要login:电脑账户名称,password:密码,登录到命令行界面。 有时会出现登录失败,报错incorrect login ,此时可以按下ctrl+alt+F2(F4)等进入,重新login,即可。

2.3 sudo service lightdm stop

这个是关闭图形界面,必须关闭

2.4 sudo apt-get remove nvidia-*

卸载系统中存在的驱动,默认有安装的,一定要执行这个

2.5 sudo chmod a+x NVIDIA-Linux-x86_64-xxx.run

给文件执行权限

2.6 sudo ./NVIDIA-Linux-x86_64-xxx.run -no-x-check -no-nouveau-check -no-opengl-files

其中:

-no-x-check:安装驱动时关闭X服务

-no-nouveau-check:安装驱动时禁用nouveau

-no-opengl-files:只安装驱动文件,不安装OpenGL文件

在安装过程中会出现:

  • he distribution-provided pre-install script failed! Are you sure you want to continue?选择 yes 继续。
  • Would you like to register the kernel module souces with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later?选择NO继续
  • Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择Yes继续

2.7 安装成功后,在命令行输入:sudo service lightdm start

重启图形界面, 按Ctrl+Alt+F7返回图形界面

2.8 nvidia-smi

检测是否安装成功

nvidia-container-runtime安装

1.设定 repository

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.listsudo apt-get update

2.安裝

sudo apt-get install nvidia-container-runtime

3.设定

sudo mkdir -p /etc/systemd/system/docker.service.dsudo tee /etc/systemd/system/docker.service.d/override.conf <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd --host=fd:// --add-runtime=nvidia=/usr/bin/nvidia-container-runtime
EOFsudo systemctl daemon-reloadsudo systemctl restart docker

4.设置为docker的默认runtime

在docker-config-file中将nvidia-container-runtime设置为docker的默认runtime。

sudo tee /etc/docker/daemon.json <<EOF
{"default-runtime": "nvidia","runtimes": {"nvidia": {"path": "/usr/bin/nvidia-container-runtime","runtimeArgs": []}}
}
EOF
sudo pkill -SIGHUP dockerd

5.测试

sudo docker run nvidia/cuda:10.0-base nvidia-smi

创建设置文件

master.csv格式

请不要在此文件中插入空行或使用空格,请不要在hostname中使用大写字母。

hostname「之后会成为Kuberntes中的Node Name」,host-ip

master.csv示例

openpai-master-01,10.1.0.1

worker.csv格式

请不要在此文件中插入空行或使用空格,请不要在hostname中使用大写字母。

hostname「之后会成为Kuberntes中的Node Name」,host-ip

worker.csv 示例

openpai-001,10.0.0.1
openpai-002,10.0.0.2
openpai-003,10.0.0.3
openpai-004,10.0.0.4

config 示例

user: <your-ssh-username>
password: <your-ssh-password>
branch_name: pai-1.0.y
docker_image_tag: v1.0.0kubeadm_download_url: "https://shaiictestblob01.blob.core.chinacloudapi.cn/share-all/kubeadm"
hyperkube_download_url: "https://shaiictestblob01.blob.core.chinacloudapi.cn/share-all/hyperkube"

branch-namedocker-image-tag代表您想安装的OpenPAI的版本。userpassword是master机器、worker机器共享的SSH用户名和密码。换句话说,您得确保所有master机器和worker机器有同样的SSH用户名和密码。

开始安装

在dev box机器上,使用下面的命令克隆OpenPAI的源代码。

git clone https://github.com/microsoft/pai.git
git checkout pai-1.0.y  # 如果您想要部署不同的版本,请切换到相应的branch。
cd pai/contrib/kubespray

文件夹pai/contrib/kubespray中包含kubespray(用于安装Kubernetes)的代码和安装OpenPAI服务的代码。 请先使用下面的命令来安装Kubernetes。请修改/path/to 为上述文件的路径。不要使用相对路径,相对路径将导致安装脚本出错。

/bin/bash quick-start-kubespray.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config

Kubernetes安装成功后,请使用下面的代码来安装OpenPAI服务。请修改/path/to 为上述文件的路径。不要使用相对路径,相对路径将导致安装脚本出错。

/bin/bash quick-start-service.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config

如果一切顺利,将会看到下面的信息:

Kubernetes cluster config :     ~/pai-deploy/kube/config
OpenPAI cluster config    :     ~/pai-deploy/cluster-cfg
OpenPAI cluster ID        :     pai
Default username          :     admin
Default password          :     admin-passwordYou can go to http://<your-master-ip>, then use the default username and password to log in.

正如这个提示所说的,您可以用 adminadmin-password 来登录Webportal,并提交一个任务来验证安装。

如果您的安装过程出错,请再次检查上述环境要求。官网也提供了一个脚本,帮助进行检查。

/bin/bash requirement.sh -m /path/to/master.csv -w /path/to/worker.csv -c /path/to/config

Reference

openpai安装指南

Ubuntu安装Docker

Docker的三种网络代理配置

Ubuntu16.04下安装NVIDIA显卡驱动

nvidia-container-runtime

nvidia-container-runtime 安裝

OpenPAI1.3.0 部署相关推荐

  1. Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法

    Win2008上.NET4.0部署出错HTTP 错误 500.21 - Internal Server Error的解决方法 参考文章: (1)Win2008上.NET4.0部署出错HTTP 错误 5 ...

  2. 全网最新 Skywalking 6.1.0部署进k8s 包含springcloud测试用例

    skywalking-kubernetes 该项目可以迅速将skywalking 6.1.0部署进kubernetes(k8s) 包含ui oap es模块和完整的springcloud测试用例 此外 ...

  3. Debian 和Ubuntu Mono 3.0 部署包

    Mono 3.0 刚发布,Debian 的Mono打包工作也开始了, 这篇博客<Mono 3.0 Preview Packages for Debian and Ubuntu >讲述了De ...

  4. Win7 IIS7 ASP.NET MVC3.0 部署问题

    Win7 IIS7 ASP.NET MVC3.0 部署问题 1.应用程序池采用经典模式,framework4.0.可能存在权限问题,解决办法:在高级设置的标识设为LocalSystem. 一般mvc都 ...

  5. Zabbix 3.0 部署监控 [三]

    Zabbix 3.0 部署监控 [三] zabbix  时间:2016年9月22日  笔者QQ:381493251  Abcdocker交流群:454666672  如果遇到什么问题可以进群询问,我们 ...

  6. Ubuntu12.04 Jdk1.7 Tomct7.0部署配置

    Ubuntu12.04 Jdk1.7 Tomct7.0部署配置 jdk1.7 下载 http://download.oracle.com/otn-pub/java/jdk/7u67-b01/jdk-7 ...

  7. Zabbix 3.0 部署监控 [二]

    原文出自  http://www.abcdocker.com/abcdocker/1453 Zabbix 3.0 部署监控 [二] zabbix 一.添加监控主机及设置 1.创建主机 Agent可以干 ...

  8. KubeEdge 1.3.0 部署

    本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.3.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...

  9. KubeEdge 1.2.0 部署

    本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.2.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...

最新文章

  1. 利用Jenkins的Pipeline实现集群自动化部署SpringBoot项目
  2. 台式电脑没鼠标怎么移动光标_台式机没有鼠标 怎么控制光标
  3. 200819C阶段一C++面向对象的编程思想
  4. Java中string.equalsIgnoreCase(0)与0.equalsIgnoreCase(string)的区别:
  5. mysql事务日志备份_事务日志备份 (SQL Server)
  6. 14的虚拟机可以用在15上面吗_环氧底漆是什么漆,分很多种吗?环氧底漆都可以用在什么上面...
  7. postgresql 修改表字段的长度
  8. 论文查重中需要注意的问题
  9. 如何将Web of Science中的题录及文章导入NoteExpress?
  10. 【专题】拉格朗日中值定理求极限
  11. 什么是远程访问?怎样在任何地方连接到您的电脑
  12. Lost RAM可能的原因
  13. 基于OTSU算法和基本粒子群优化算法的双阈值图像分割
  14. 语音计算机音乐学猫叫,“杨钰莹学猫叫”上热搜,坤音四子自带流量……山东卫视春晚喜提全国收视第一...
  15. 开放平台与WeCube开源
  16. Pixhawk---sdlog2应用详解
  17. Java之简单的图片动态显示(实现类似GIF动画结果)
  18. 利用人工智能和进化分析,绘制出真核生物的蛋白质之间相互作用的3D模型
  19. 搞笑python代码_ZAKER搞机团
  20. 数据库指向默认模式(Schema)

热门文章

  1. 黎想首次公开发布微信公众号运营的23条黄金法则,缺一不可!
  2. 收藏的技术博客链接(不断更新)
  3. 终端定制行业分销初步设计
  4. Android中的线程
  5. Linux查看硬盘属性(机械硬盘/固态硬盘)
  6. 数据挖掘分析考试笔记
  7. mysql 关联删除_mysql 关联删除
  8. java电话正则屏蔽_java针对电话号码正则匹配实例
  9. 计算机视觉中的小样本学习综述
  10. Hybrid Conditional Random Field based Camera-LIDAR Fusion for Road Detection