版本号:V0.0.1  

前期准备:

AI平台离线部署包(这里面是离线部署需要用到的所有安装包和镜像文件等)

一.快速部署步骤

1. 安装docker

2. 安装k3s

3. 安装显卡驱动(有显卡需求)

4. 安装kubeflow

5. 移植目录,加载镜像

6. 启动docker compose服务

二.离线部署步骤

1. 离线安装docker

2. 离线安装k3s

3. 离线安装显卡驱动(有显卡需求)

4. 搭建离线docker镜像仓库

5. 修改kubeflow离线配置

6. 安装kubeflow

7. 移植目录,加载镜像

8. 启动docker compose服务

三.服务器部署

1. 安装Docker

1.1 关闭***

因为docker会用到各种端口,逐一去修改***设置非常麻烦,建议直接关闭***(若未安装***,则不需要此操作)

#查看***状态

sudo systemctl status firewalld

 

# 关闭***并查询状态

sudo systemctl stop firewalld

 

1.2 关闭selinux

关闭selinux以允许容器访问宿主机的文件系统

vi /etc/selinux/config

 

# 将文件中的SELINUX="" 为 disabled ,然后重启。

 

# 如果不想重启系统,使用命令setenforce 0

# setenforce 1 设置selinux为enforcing模式

 

# 查看selinux状态:

getenforce

 

 

# SELINUX=enforcing:强制模式,代表 SELinux 正常运行,所有的策略已经生效。(SELINUX的默认状态)

# SELINUX=permissive:宽容模式,代表 SELinux 已经启动,但是只会显示警告信息,而并不会实际限制进程访问文件或目录资源。(执行”setenforce 0”后,会到达该状态)。

# SELINUX=disable:关闭,代表 SELinux 被禁用了。(修改指定的系统文件后,会达到此状态)。

 

1.3 安装docker

# 设置存储库

sudo apt-get update

sudo apt-get install ca-certificates curl gnupg lsb-release

sudo mkdir -p /etc/apt/keyrings

 

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

 

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker 引擎

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

 

 

1.4 离线安装docker

# 从《AI平台离线部署包》中找到“docker-20.10.18.tar”并解压

tar -zxvf docker-20.10.18.tar

 

# 复制压缩后的文件到指定文件夹

cp docker/* /usr/bin

 

#注册编辑docker服务

vim /etc/systemd/system/docker.service

 

# 添加可执行权限

chmod +x /etc/systemd/system/docker.service

 

# 一键三连

systemctl daemon-reload

systemctl start docker

systemctl enable docker.service # 设置开机自启动

 

1.5 Docker卸载

#停掉docker服务

systemctl stop docker

 

#查看yum安装的docker文件包

yum list installed |grep docker

 

#删除所有安装的docker文件包

yum -y remove docker.x86_64

 

# 查看rpm包是否还有

rpm -qa |grep docker

 

# 删除docker镜像放置的位置

rm -rf /var/lib/docker

 

 

2. 安装部署K3S

2.1 准备工作

需要三个东西分别是:

K3s的安装脚本(k3s-install.sh);

K3s的二进制文件(k3s);

K3s依赖的镜像(k3s-airgap-images-amd64.tar);

 

2.2 安装K3S

# k3s 需要赋予可执行权限  

sudo chmod +x k3s

sudo chmod +x k3s-install.sh

cp k3s /usr/local/bin/

 

# 导入镜像

docker load -i k3s-airgap-images-amd64.tar

 

# 设置环境遍历

export INSTALL_K3S_SKIP_DOWNLOAD=true

export INSTALL_K3S_EXEC='--docker'

 

# 安装k3s

./k3s-install.sh

 

# 安装成功情况

 

 异常处理:

-服务器资源不足也会导致启动失败

-版本错误也可能导致启动失败

-没有selinux访问

#报错截图

 

# 安装selinux服务

yum install -y container-selinux

yum install -y https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-1.2-2.el7.noarch.rpm

2.3 查看k3s状态

k3s kubectl get pods -A

 

3. 搭建离线Docker镜像仓库

本步骤只在现场无网络的情况执行,使用docker registry部署离线仓库

# 复制registry.zip到仓库目录并解压

unzip registry.zip

 

# docker 启动离线仓库

docker run -d -p 5000:5000 --name registry -v /root/docker-registry/registry:/var/lib/registry registry

 

4. 安装kubeflow

4.1 获取安装脚本

# 在线获取

git clone https://github.com/shikanon/kubeflow-manifests.git

 

# 离线获取

在《AI平台离线部署包》中找到 “kubeflow-manifests-master.zip” 包并解压

unzip kubeflow-manifests-master.zip

 

# 一键安装

cd kubeflow-manifests

python3 install.py

 

# 停止kubeflow 服务

k3s-uninstall.sh

docker rm -f $(docker ps -aqf "name=k8s*")

 

# 删除kubeflow自动下载的镜像

docker rmi $(docker images | grep aliyuncs |awk {'print $3'})

 

4.2 离线安装修改配置(有网络可忽略)

修改“kubeflow-manifests-master”目录下所有包含“registry.cn-shenzhen.aliyuncs.com”字段替换为本地docker仓库地址

 

#下面的sed 命令用 linux 替换 unix 格式的所有实例,因为 g 是一个全局替换标志


sed -i "s/registry.cn-shenzhen.aliyuncs.com/127.0.0.1/g" `grep 127 -rl /root/`

 

4.3 查看kubeflow状态

k3s kubectl get pods -A

4.4 创建密钥对象

# 查看 kubeflow 命名空间中 secret 的配置信息

kubectl get secret -n kubeflow mlpipeline-minio-artifact -o yaml

 

# 结果以yaml格式输出,复制一份修改namespace的字段为kubeflow-user-example-com,新生成yaml文件,在创建新的secret即可。

kubectl apply -f secret-demo.yaml

 

 

# 查看是否创建成功

kubectl get secret -n kubeflow-user-example-com  mlpipeline-minio-artifact

 

4.5 kubeflow查看服务

访问http://主机IP:30000用户名是admin@example.com密码是password

四.前后端部署

前端部署基于tomcat + nginx的部署方式

后端部署基于docker compose完成部署

主要包含以下服务:

l app_2.0        : 后端主服务

l nginx            : nginx代理服务器

l mysql_2.0    : mysql数据库(用户管理信息)

l es_2.0        : es数据库(主要数据库存储)

l jupyter_2.0    : jupyter-notebook编辑器

l netron_2.0    : netron模型可视化插件

l minio            : minio对象存储

l pypi            : python离线包仓库

l model_pg1    : 模型评估服务

l model_yc1    : 模型预测服务

l dind            : 自动创建docker环境服务

l Jupyterhub    : 多用户的jupyter-lab开发环境

l label-studio    : 标注工具

l tomcat        : 前端服务器

 

1. 拉取后端代码

AI平台2.0后端Git仓库地址:

https://code.datamatrixai.com/cognitiveIntelligencePlatform/quantumai-2.0.git

 

2. 用docker启动(单服务):

1. jupyterhub启动命令

docker run --name jupyterhub  --gpus all -dit -u root --restart=always -v /etc/jupyterhub/v1/:/etc/jupyterhub/ -v /home/jupyter/:/home/ -p 8888:6000 -p 8887:5050 jupyterhub:v1.0.2 /bin/bash

 

2. 部署开发jupyter算法开发环境

docker run -tid --name dind --privileged -p 9900:5000 -v /run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -v /root/dind_server/:/root/dind_server python:3.7.14 /bin/bash

 

3. 部署模型评估服务

docker run -itd --name model_pg --restart=always -v /data/model/tensorflow/:/root -p 11020:5000 tensorflow_model:v1.0

 

4. 部署模型预测服务

docker run -tid --name model_yc --restart=always -w /root/ -v /root/code/wangfl/AI_anli/AIDEMO/DLAlgrithm/:/root/ -p 5555:5000 linyq1/pytorch-flask:v1.0 python3 app.py

 

 

3. 用docker compose启动

如果是单机部署,所有服务均在一台服务器上,建议使用docker compose完成服务部署,需要注意networks配置。

如果不是单机部署,需要手动修改docker-compose.yml配置。