下载镜像
无docker环境下载dockerhub镜像神器:https://github.com/NotGlop/docker-drag
执行以下命令,等待镜像下载成功:
(python36) λ python docker_pull.py heartexlabs/label-studio:latest
Creating image structure in: tmp_label-studio_latest
e0b25ef51634: Pull complete [28566292]
702cc8b0adfe: Pull complete [108]
d91b7f982fe1: Pull complete [204121976]
ee20c0e6fb44: Pull complete [196]
74bece47633d: Pull complete [4991356]
c991bd470a7e: Pull complete [790]
081b73192926: Pull complete [108507390]
9ee52cdf9d74: Pull complete [16544265]
9d3a73b090cc: Pull complete [8223]
205e14f8e69f: Pull complete [172]
df2d0b18cb3a: Pull complete [7362275]
085c492e76d4: Pull complete [21058465]
Docker image pulled: heartexlabs_label-studio.tar
上传SWR
前提条件:准备一台计算机,要求安装的容器引擎版本必须为1.11.2及以上
操作步骤:
Step 1. 以root用户登录容器引擎所在的虚拟机
Step 2. 上传镜像压缩包到虚拟机
Step 3. 执行以下命令加载镜像压缩包,等待镜像加载完成
λ docker load -i heartexlabs_label-studio.tar
c5ec52c98b31: Loading layer [==================================================>] 75.14MB/75.14MB
71d1ffdc1226: Loading layer [==================================================>] 1.536kB/1.536kB
2cee64127f27: Loading layer [==================================================>] 576MB/576MB
1e98066136b8: Loading layer [==================================================>] 2.56kB/2.56kB
179b4476cc27: Loading layer [==================================================>] 16.01MB/16.01MB
c8948c5c948f: Loading layer [==================================================>] 3.584kB/3.584kB
8a6b1e27a6a6: Loading layer [==================================================>] 452.2MB/452.2MB
9de36f8e252e: Loading layer [==================================================>] 41.05MB/41.05MB
4433ef6618fe: Loading layer [==================================================>] 40.96kB/40.96kB
041f9091862b: Loading layer [==================================================>] 2.56kB/2.56kB
3b1566e05418: Loading layer [==================================================>] 27.02MB/27.02MB
edcd410d12a1: Loading layer [==================================================>] 37.49MB/37.49MB
Loaded image: heartexlabs/label-studio:latest
Step 4. 获取SWR登录访问指令,并复制到节点上执行
生成临时登录指令 或查看 如何获取长期有效登录指令 。
Step 5. 执行以下命令上传镜像至SWR
λ sudo docker tag heartexlabs/label-studio:latest swr.cn-east-3.myhuaweicloud.com/modelarts-idm/label-studio:v1
λ sudo docker push swr.cn-east-3.myhuaweicloud.com/modelarts-idm/label-studio:v1
# sudo docker tag [{镜像名称}:{版本名称}] swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
# sudo docker push swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
CCE部署镜像
前提条件:
准备一个CCE集群
操作步骤:
Step 1. 使用镜像创建无状态工作负载
- 基本信息:指定实例数量:1
- 容器配置:选择刚上传的SWR镜像:label-studio:v1,选择总是拉取镜像
Step 2. 绑定ELB+EIP
- 选择刚创建的工作负载,配置访问方式
- 创建负载均衡,服务亲和—集群级别,负载均衡器—共享型,端口配置—服务端口:443(支持自定义) + 容器端口:8080(label-studio启动时默认绑定8080端口)
- 负载均衡器绑定EIP
Step 3. 数据持久化—挂载OBS对象存储
- 选择刚创建的工作负载,配置容器管理—数据存储—存储卷声明PVC:添加存储卷声明
公网访问
https://{EIP地址}:443/
数据持久化
挂载持久化数据卷
Step 1. 选择对应CCE集群—容器存储——创建存储卷声明:SC名称—obs-standard。
Step 2. 选择label-studio对应的工作负载—容器管理—数据存储—存储卷声明PVC:绑定刚创建的PVC:对应的挂载路径为:/label-studio/data
Step 3. 等待实例重新部署完成,登录labelstudio,创建项目。然后删除示例重新部署,label-studio中数据还在,表示持久化成功。
挂载PG数据库
Step 1. 下载pg数据库镜像,并上传至SWR,方法参考本章第一节
λ docker pull postgres
Step 2. 选择PG镜像部署工作负载:
- 设置环境变量:POSTGRES_PASSWORD={pwd}
- 设置数据存储:建议挂载数据盘,此处实验仅挂载本地存储,挂载路径
/postgres->/var/lib/postgresql/data
Step 3. label-studio配置PG数据库,选择label-studio实例—容器管理—环境变量:
- DJANGO_DB default
- POSTGRE_NAME postgres
- POSTGRE_USER postgres
- POSTGRE_PASSWORD {pwd}
- POSTGRE_PORT 5432 (pg默认端口)
- POSTGRE_HOST 10.0.0.72 (对应数据库实例IP)
Step 4. 等待实例重新部署完成,登录labelstudio,创建项目。然后删除示例重新部署,label-studio中数据还在,表示持久化成功。
问题及解决方案
- 问题1. 工作负载绑定ELB时,ELB未自动添加后端服务器组,导致公网访问失败。
解决:手动给ELB设置后端服务器组,添加云服务器,选择工作负载实例所在的节点(进入工作负载,查看实例列表,获取所在节点IP)和后端端口(进入集群—服务发现,选择对应的负载均衡,点击右侧更多—查看YAML,获取nodePort)。