算法平台环境搭建.md 7.9 KB

[TOC]

1、离线安装unzip

# 1.新建unzip文件夹
mkdir /opt/modules/unzip
# 2.将unzip-6.0-19.el7.x86_64.rpm上传到/opt/modules/unzip下安装unzip
rpm -Uvh unzip-6.0-19.el7.x86_64.rpm 

# 3.查看是否安装成功
rpm -qa | grep unzip

输出unzip版本号表示安装成功

image20220309200518

2、离线安装docker

# 1.新建docker文件夹
mkdir /opt/modules/docker

# 2.将docker19-rpm.zip上传到/opt/modules/docker下,进入目录,进行解压缩操作
cd /opt/modules/docker

unzip docker19-rpm.zip

# 3.安装docker
rpm -ivh *.rpm --force --nodeps

# 4.启动docker并设置开机自启
systemctl enable docker && systemctl start docker
# 5.查看是否安装成功
docker --version

输出docker版本号表示安装成功

images20220309201941

3、开启docker远程访问端口

3.1、进入/etc/docker目录,生成ca秘钥和证书

cd /etc/docker

read -s PASSWORD

输入上条命令后,命令行会空一行,此时自行定义一个密码变量

image20220309202338

read -s SERVER

输入上条命令后,命令行会空一行,此时输入当前服务器ip

image20220309202557

openssl genrsa -aes256 -passout pass:$PASSWORD  -out ca-key.pem 2048

生成ca证书,填写配置信息

openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem

image20220309202909

3.2、生成server密钥和证书

生成server证书私钥文件

openssl genrsa -out server-key.pem 2048

生成server证书请求文件

openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr

使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书

openssl x509 -req -days 365 -in server.csr -CA ca.pem -CAkey ca-key.pem -passin "pass:$PASSWORD" -CAcreateserial  -out server-cert.pem

3.3、生成client密钥和证书

生成client证书RSA私钥文件

openssl genrsa -out key.pem 2048

生成client证书请求文件

openssl req -subj '/CN=client' -new -key key.pem -out client.csr

sh -c 'echo "extendedKeyUsage=clientAuth" > extfile.cnf'

生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)

openssl x509 -req -days 365 -in client.csr -CA ca.pem -CAkey ca-key.pem  -passin "pass:$PASSWORD" -CAcreateserial -out cert.pem  -extfile extfile.cnf

3.4、更改密钥权限,删除无用文件

chmod 0400 ca-key.pem key.pem server-key.pem

chmod 0444 ca.pem server-cert.pem cert.pem

rm client.csr server.csr

3.5、修改ExecStart属性

vim /usr/lib/systemd/system/docker.service

ExecStart=/usr/bin/dockerd \
    --tlsverify \
    --tlscacert=/etc/docker/ca.pem \
    --tlscert=/etc/docker/server-cert.pem \
    --tlskey=/etc/docker/server-key.pem \
    -H tcp://0.0.0.0:2376 \
    -H unix:///var/run/docker.sock \
     -H fd:// --containerd=/run/containerd/containerd.sock

3.6、重启docker服务

# c
systemctl daemon-reload && systemctl restart docker

# 验证docker服务已经具备了被远程访问的能力

image-20220316185119154

4、上传docker镜像

# 1.将pythonimages.tar上传至服务器,并执行命令:
docker load < pythonimage.tar

# 2.将tensorflowimages.tar上传至服务器,并执行命令:
docker load < tensorflowimage.tar

# 3.查看已有镜像
docker images

5、安装minio

### 创建目录
mkdir /opt/modules/minio

mkdir /opt/modules/minio/data

### 进入目录
cd /opt/modules/minio


### 将minio安装文件上传到/opt/modules/minio下

### 赋权
chmod +x minio


### /etc/profile文件添加环境变量
vim /etc/profile

export MINIO_ROOT_USER=minio
export MINIO_ROOT_PASSWORD=minio123

### 使环境变量命令参数详解生效
source /etc/profile

### 后台启动minio(--address参数为端口号设置)
nohup /opt/modules/minio/minio server --address 0.0.0.0:9000 /opt/modules/minio/data/ > /opt/modules/minio/minio.log 2>&1 &

浏览器输入服务器ip:9000,成功进入minio页面,安装成

image20220309204832

### 输入用户名minio,密码minio123后进入minio控制台,依次创建存储


”algmode,”algorithm”,”algtemplate”,”dataset”,”publishedalgorithm”,”tensorboardfile”,”visiarguartifact”.

image20220309205028

6、安装argo

6.1、安装etcd---(如果有请忽略)

image-20220317204635163

# 将etcd安装文件上传到/opt/modules/argo下,解压,并将文件放入系统路径中
mkdir /opt/modules/argo
cd /opt/modules/argo
tar zxvf etcd-v3.5.1-linux-amd64.tar.gz
cd etcd-v3.5.1-linux-amd64
cp etcd /usr/bin/
cp etcdctl /usr/bin/

# 创建一个服务描述文件,放入systemd的服务目录
# 进入目录

cd /usr/lib/systemd/system

vim etcd.service # 添加如下内容

[Unit]
Description=Etcd Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/bin/etcd

[Install]
WantedBy=multi-user.target

6.2、安装argo

  1. 将 argo-linux-amd64.gz 文件上传至/opt/modules/argo目录下
# 执行命令 
gunzip argo-linux-amd64.gz 
chmod +x argo-linux-amd64 
mv ./argo-linux-amd64 /usr/local/bin/argo 

# 查看:
argo version

image-20220317204954859

  1. 创建命名空间
kubectl create ns argo
  1. 安装argo
# 1.将argo安装文件quick-start-postgres.yaml和argo-images.tar 上传到/opt/modules/argo下
docker load -i argo-images.tar

# 共5个
# argoproj/argocli:v3.0.3
# minio/minio:RELEASE.2019-12-17T23-16-33Z 
# postgres:12-alpine 
# argoproj/argoexec:v3.0.3
# argoproj/workflow-controller:v3.0.3

# 2.执行命令进行安装

kubectl apply -n argo -f quick-start-postgres.yaml

# (卸载方式:kubectl delete -n argo -f quick-start-postgres.yaml)

# 3.查看服务
kubectl get pods -n argo

image-20220317205227206

  1. 角色绑定
# 当集群是基于RBAC(Role-Based Access Control,基于角色的访问控制)时,默认账户有很多的限制,比如不能支持组件,输出等等。执行以下命令授权默认的服务账户在默认的namespace中拥有admin的权限
kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default
  1. 端口映射
kubectl patch svc argo-server -n argo -p '{"spec": {"type": "LoadBalancer"}}'

kubectl patch svc minio -n argo -p '{"spec": {"type": "LoadBalancer"}}'

# 通过kubectl get svc -n argo查看服务 ,查看映射后的端口(红框选中)
# 根据 IP+argo-server端口的方式访问 argo ui界面,根据Ip+minio端口的方式访问argo-minio界面,用户名为admin,密码为password

image-20220317205535260

7、目前遇见的BUG与解决方案

7.1、argo无法正常启动

若出现argo-server,postgres及workflow-controller Pod 状态出现问题。

image-20220317205738403

# 解决方案:将hugepages关闭。将所有的节点hugepage关闭,pg中参数huge_page=try会默认不选择hugepage,因此能够运行成功。
# 执行命令:
echo "vm.nr_hugepages=0" >> /etc/sysctl.conf
# 生效:(执行如下命令,或者执行/sbin/sysctl -p )
sysctl -p
# 查看
kubectl get pod -o wide -l app=postgres -n argo

附录----安装软件的版本

软件 版本
minio 2021-06-17T00:10:46Z
argo v3.0.2