关于某项目边缘设备的独立部署改造方案
原创2024/5/8大约 2 分钟
关于某项目边缘设备的独立部署改造方案
1、业务背景
现有某卷烟厂项目,边端 WPCS盒子(一种小型服务器)上部署了 MC 代理(一个 Java 服务)、恒定模型(一个 Python 服务)、策略模型(一个 Python 服务),这三个服务的启动停止本来是通过文龙平台的 K8S 进行管理的。
文龙平台:比如工厂有两个车间,它们内部的局域网不互通,而文龙平台即是站在这一堵墙上的系统,它拥有双网卡,可以分别和两个车间的网络进行通讯。
2、需求目标
由于客户的要求及现场一系列原因,导致 WPCS盒子 的网络和文龙平台无法再打通,因此这三个服务需要脱离文龙平台进行独立部署。
3、需求分析
本想着重新打包,不再用 K8S 镜像的方式启动,而是用 docker 容器启动,但退一步讲,原来是通过文龙的 K8S 启动的,它无非也是通过内部命令+镜像进行启动的,现在镜像依然还在,我们只需要定义一套启动命令不就可以了嘛!
为什么对重新打包这么敏感?因为这意味着要重新把几十个G的镜像文件通过速度巨慢的 VPN 传输到客户现场内网中...
4、解决方案
(1)MC 的启动脚本:
#!/bin/bash
docker rm -f mcproxy
docker run --name mcproxy \
--restart=always \
-p 31092:18092 \
--memory 2g \
--env LANG=C.UTF-8 \
--env EVN_URL_CORR=http://172.16.25.172:32532 \
--env EVN_URL_STRATEGY=http://172.16.25.172:32535 \
--env REDIS_IP=172.16.25.172 \
-v /etc/timezone:/etc/timezone:ro \
-v /etc/localtime:/etc/localtime:ro \
-v /app/h2:/root/app/h2 \
-v /app/k8s/download/strategy_temp:/app/k8s/download/strategy_temp \
-v /app/k8s/download/models_temp:/app/k8s/download/models_temp \
-v /app/k8s/download/strategy:/app/k8s/download/strategy \
-v /app/k8s/download/models:/app/k8s/download/models \
-v /app/k8s/download/z_dlearn_rest/saved_model:/app/k8s/download/z_dlearn_rest/saved_model \
-v /home/cmes/docker/extent:/app/strategy/extent \
-d 10.114.185.53:52523/mc:3.8.14(2)sklearn 的启动脚本:
#!/bin/bash
docker rm -f sklearn
docker run -id --name sklearn \
--privileged=true \
--restart=always \
-p 32532:13501 \
-e PYTHONIOENCODING=utf-8 \
-v /app/k8s/download/z_dlearn_rest/saved_model:/home/cmes/z_dlearn_rest/saved_model \
-d 10.114.185.53:52523/sklearn:3.8.2a \
nohup /opt/conda/bin/python /home/cmes/z_dlearn_rest/dlearn_rest_async/app_v3_container.pyc >>/dev/null 2>&1 &(3)策略的启动脚本:
#!/bin/bash
docker rm -f dlearn_image
docker run -id --name dlearn_image \
--privileged=true \
--net=host \
--restart=always \
-c 4 \
-e TZ='Asia/Shanghai' \
-v /app/k8s/download/strategy/:/app/k8s/download/strategy/ \
-v /home/cmes/docker/extent/:/app/strategy/extent/ \
-d 10.114.185.53:52523/dlearn_py_image:3.5.3 nohup python3 -u /app/dlearn_py_image_bk/webapi.pyc -port 32535 -proxys=detect^8090,agegender^8091,classifier^8092,paddle^8093,yolov5^8101,deeplab^8102,pointrec^8104 >> /dev/null 2>&1 &
