> [TOC] # 1、离线安装unzip ```shell # 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](assets/image20220309200518.png) # 2、离线安装docker ```shell # 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](assets/images20220309201941.png) # 3、开启docker远程访问端口 ## 3.1、进入/etc/docker目录,生成ca秘钥和证书 ```shell cd /etc/docker read -s PASSWORD ``` **输入上条命令后,命令行会空一行,此时自行定义一个密码变量** ![image20220309202338](assets/image20220309202338.png) ```shell read -s SERVER ``` **输入上条命令后,命令行会空一行,此时输入当前服务器ip** ![image20220309202557](assets/image20220309202557.png) ```shell openssl genrsa -aes256 -passout pass:$PASSWORD -out ca-key.pem 2048 ``` **生成ca证书,填写配置信息** ```shell openssl req -new -x509 -passin "pass:$PASSWORD" -days 365 -key ca-key.pem -sha256 -out ca.pem ``` ![image20220309202909](assets/image20220309202909.png) ## 3.2、生成server密钥和证书 **生成server证书私钥文件** ```shell openssl genrsa -out server-key.pem 2048 ``` **生成server证书请求文件** ```shell openssl req -subj "/CN=$SERVER" -new -key server-key.pem -out server.csr ``` **使用CA证书及CA密钥以及上面的server证书请求文件进行签发,生成server自签证书** ```shell 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私钥文件** ```shell openssl genrsa -out key.pem 2048 ``` **生成client证书请求文件** ```shell openssl req -subj '/CN=client' -new -key key.pem -out client.csr sh -c 'echo "extendedKeyUsage=clientAuth" > extfile.cnf' ``` **生成client自签证书(根据上面的client私钥文件、client证书请求文件生成)** ```shell 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、更改密钥权限,删除无用文件 ```shell 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属性 ```shell 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服务 ```shell # c systemctl daemon-reload && systemctl restart docker # 验证docker服务已经具备了被远程访问的能力 ``` ![image-20220316185119154](assets/image-20220316185119154.png) # 4、上传docker镜像 ```shell # 1.将pythonimages.tar上传至服务器,并执行命令: docker load < pythonimage.tar # 2.将tensorflowimages.tar上传至服务器,并执行命令: docker load < tensorflowimage.tar # 3.查看已有镜像 docker images ``` # 5、安装minio ```shell ### 创建目录 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](assets/image20220309204832.png) ```shell ### 输入用户名minio,密码minio123后进入minio控制台,依次创建存储 ”algmode,”algorithm”,”algtemplate”,”dataset”,”publishedalgorithm”,”tensorboardfile”,”visiarguartifact”. ``` ![image20220309205028](assets/image20220309205028.png) # 6、安装argo ## 6.1、安装etcd---(如果有请忽略) ![image-20220317204635163](assets/image-20220317204635163.png) ```shell # 将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目录下 ```shell # 执行命令 gunzip argo-linux-amd64.gz chmod +x argo-linux-amd64 mv ./argo-linux-amd64 /usr/local/bin/argo # 查看: argo version ``` ![image-20220317204954859](assets/image-20220317204954859.png) 2. 创建命名空间 ```shell kubectl create ns argo ``` 3. 安装argo ```shell # 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](assets/image-20220317205227206.png) 4. 角色绑定 ```shell # 当集群是基于RBAC(Role-Based Access Control,基于角色的访问控制)时,默认账户有很多的限制,比如不能支持组件,输出等等。执行以下命令授权默认的服务账户在默认的namespace中拥有admin的权限 kubectl create rolebinding default-admin --clusterrole=admin --serviceaccount=default:default ``` 5. 端口映射 ```shell 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](assets/image-20220317205535260.png) # 7、目前遇见的BUG与解决方案 ## 7.1、argo无法正常启动 若出现argo-server,postgres及workflow-controller Pod 状态出现问题。 ![image-20220317205738403](assets/image-20220317205738403-16475218592261.png) ```shell # 解决方案:将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 |