OpenPai v1.1.1安装部署手册

2020-08-18  本文已影响0人  Markdown爱好者

OpenPAI 1.1.1安装部署教程

安装指南

OpenPAI的体系结构已在v1.0.0中更新和优化。v1.0.0之前,OpenPAI基于Yarn和Kubernetes,数据由HDFS管理。从v1.0.0,OpenPAI已切换到纯基于Kubernetes的体系结构。许多新的功能,如AAD authorizationHivedschedulerKube RuntimeMarketplace,等,也包括在内。如果仍然要安装旧的基于Yarn的OpenPAI,请继续使用v0.14.0

要安装OpenPAI> = v1.0.0,请首先检查 安装要求。然后,如果您没有安装旧版本的OpenPAI,请按照从头开始安装。否则,请首先遵循“ 清理先前的部署”,然后执行“ 从头开始安装”。

安装要求

OpenPAI的部署要求您至少拥有3台单独的节点:一台DevBox节点,一台master节点和一台worker 节点。

在安装,维护和卸载期间,DevBox机器通过SSH控制master节点和worker节点。DevBox节点有且只有一台。master节点用于运行核心Kubernetes组件和核心OpenPAI服务。在大多数情况下,一台master节点就足够了。如果您希望群集具有高可用性,则可以设置多个master节点。我们建议您将仅CPU的节点用于DevBox节点和master节点。对于worker节点,所有机器均应具有GPU,并已正确安装GPU驱动程序。GPU驱动采用NVIDIA 418

安装方式1:gpu驱动安装采用下载驱动包方式安装

安装方式2:

sudo add-apt-repository ppa:graphics-drivers/ppa 

sudo apt update 

sudo apt install nvidia-418 

sudo reboot

详细信息,请在安装前检查以下要求:

使用仅CPU的工作程序的提示

当前,OpenPAI对只有CPU的机器支持是有限的。如果您既有GPUworker节点又有CPU节点,请首先仅使用GPU节点设置PAI。成功安装PAI后,您可以将CPU节点附加到该PAI上并设置仅CPU的虚拟集群。有关详细信息,请参阅如何使用CPU节点。如果您只有CPU节点,那么还没有官方的安装支持。

与网络相关的问题的提示

如果您遇到网络问题,例如机器无法下载某些文件或无法连接到某些Docker注册表,请结合提示的错误日志和kubespray作为关键字,然后搜索解决方案。您还可以参考安装疑难解答。

从头开始安装

除了上述要求外,此安装脚本还要求所有工作机必须是同型GPU节点,并且它们具有相同的硬件,例如CPU类型和数量,GPU类型和数量,内存大小。如果您有不同类型的工作程序,请在安装过程中首先仅包括一种类型的工作程序,然后按照如何添加和删除节点添加不同类型的工作程序。现在,请确定您的开发机,主机和工作机。

创建配置

确定所有机器之后,请在dev box机器上创建一个master.csv,一个worker.csv和一个config文件。这些文件分别代表主节点列表,工作节点列表和自定义配置。以下是这3个文件的格式和示例。

master.csv 格式

不要在该文件中插入空白行或使用空格,也不要在主机名中使用大写字母。

hostname(Node Name in k8s),host-ip
master.csv
openpai-master-01,10.1.0.1
worker.csv 格式

不要在该文件中插入空白行或使用空格,也不要在主机名中使用大写字母。

hostname(Node Name in k8s),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.1.y
docker_image_tag: v1.1.1

# Optional

#############################################
# Ansible-playbooks' inventory hosts' vars. #
#############################################
# ssh_key_file_path: /path/to/you/key/file

#####################################
# OpenPAI's service image registry. #
#####################################
# docker_registry_domain: docker.io
# docker_registry_namespace: openpai
# docker_registry_username: exampleuser
# docker_registry_password: examplepasswd

###########################################################################################
#                         Pre-check setting                                               #
# By default, we assume your gpu environment is nvidia. So your runtime should be nvidia. #
# If you are using AMD or other environment, you should modify it.                        #
###########################################################################################
# worker_default_docker_runtime: nvidia
# docker_check: true

# resource_check: true

# gpu_type: nvidia

########################################################################################
# Advanced docker configuration. If you are not familiar with them, don't change them. #
########################################################################################
# docker_data_root: /mnt/docker
# docker_config_file_path: /etc/docker/daemon.json
# docker_iptables_enabled: false

## An obvious use case is allowing insecure-registry access to self hosted registries.
## Can be ipaddress and domain_name.
## example define 172.19.16.11 or mirror.registry.io
# openpai_docker_insecure_registries:
#   - mirror.registry.io
#   - 172.19.16.11

## Add other registry,example China registry mirror.
# openpai_docker_registry_mirrors:
#   - https://registry.docker-cn.com
#   - https://mirror.aliyuncs.com

#######################################################################
#                       kubespray setting                             #
#######################################################################

# If you couldn't access to gcr.io or docker.io, please configure it.
# gcr_image_repo: "gcr.io"
# kube_image_repo: "gcr.io/google-containers"
# quay_image_repo: "quay.io"
# docker_image_repo: "docker.io"
# kubeadm_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kubeadm_version }}/bin/linux/{{ image_arch }}/kubeadm"
# hyperkube_download_url: "https://storage.googleapis.com/kubernetes-release/release/{{ kube_version }}/bin/linux/{{ image_arch }}/hyperkube"


# openpai_kube_network_plugin: calico

branch-name并且docker-image-tag要安装代表OpenPAI版本。该userpassword是从开发箱机的SSH用户名和密码来掌握机器和工人机器。换句话说,您应确保所有主节点和工作节点共享相同的SSH用户名和密码。至于可选配置,如果您确切知道它们是什么,请对其进行自定义。

对于Azure用户:如果要在Azure中部署OpenPAI,请取消注释openpai_kube_network_plugin: calico上面的配置文件,并将其更改为openpai_kube_network_plugin: weave。这是因为Azure不支持calico。

开始安装

在DevBox机器上,使用以下命令克隆OpenPAI存储库:

git clone https://github.com/microsoft/pai.git
git checkout pai-1.1.y  # change to a different branch if you want to deploy a different version
cd pai/contrib/kubespray

该文件夹pai/contrib/kubespray包含用于kubespray和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-password

You 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

保留资料夹

强烈建议您保留该文件夹~/pai-deploy以用于将来的操作,例如升级,维护和卸载。此文件夹中最重要的内容是:

如果可能的话,您可以进行备份,~/pai-deploy以防意外删除。

除了文件夹之外,您还应该记住您的OpenPAI集群ID,该ID用于指示您的OpenPAI集群。默认值为pai。某些管理操作需要确认此群集ID。

清理先前的部署

将数据保存到其他位置

如果您之前安装过OpenPAI v1.0.0,则要安装OpenPAI> = v1.0.0,应首先清理先前的部署。您无法保留任何有用的数据:所有作业,用户信息,数据集将不可避免且不可逆地丢失。因此,如果您在以前的部署中有任何有用的数据,请确保已将它们保存到其他位置。

HDFS数据

在此之前v1.0.0,PAI将为您部署HDFS节点。之后v1.0.0,将不会部署HDFS节点,并且在升级时将删除以前的数据。以下命令可用于传输HDFS数据:

# check data structure
hdfs dfs -ls hdfs://<hdfs-namenode-ip>:<hdfs-namenode-port>/

hdfs dfs -copyToLocal hdfs://<hdfs-namenode-ip>:<hdfs-namenode-port>/ <local-folder>

<hdfs-namenode-ip>并且<hdfs-namenode-port>是PAI主站的IP,9000如果您未修改默认设置。请确保您的本地文件夹具有足够的容量来容纳要保存的数据。

工作和用户的元数据

作业和用户的元数据也将丢失,包括作业记录,作业日志,用户名,用户密码等。我们没有自动的工具来备份这些数据。如果发现有价值的数据,请手动传输。

Kubernetes上的其他资源

如果您在Kubernetes上部署了任何其他资源,请为其进行适当的备份,因为Kubernetes集群也将被破坏。

删除以前的PAI部署

要删除以前的部署,请使用以下命令:

git clone https://github.com/Microsoft/pai.git
cd pai
#  checkout to a different branch if you have a different version
git checkout pai-0.14.y

# delete all pai service and remove all service data
./paictl.py service delete

# delete k8s cluster
./paictl.py cluster k8s-clean -f -p <path-to-your-old-config>

如果找不到旧的配置,则以下命令可以帮助您检索它:

./paictl.py config pull -o <path-to-your-old-config>

您还应该通过使用root用户在每个GPU节点上执行以下命令来删除OpenPAI安装的GPU驱动程序:

#!/bin/bash

lsmod | grep -qE "^nvidia" &&
{
    DEP_MODS=`lsmod | tr -s " " | grep -E "^nvidia" | cut -f 4 -d " "`
    for mod in ${DEP_MODS//,/ }
    do
        rmmod $mod ||
        {
            echo "The driver $mod is still in use, can't unload it."
            exit 1
        }
    done
    rmmod nvidia ||
    {
        echo "The driver nvidia is still in use, can't unload it."
        exit 1
    }
}

rm -rf /var/drivers
reboot

删除后,您现在可以从头开始安装来安装OpenPAI 。

上一篇下一篇

猜你喜欢

热点阅读