本小节使用mindie-service run包安装目录下(./mindie-service/latest/examples/kubernetes_deploy_scripts)中的脚本实现调用kubectl进行服务部署,脚本提供一键式部署和卸载单机形态集群功能,集群管理员用户可参考这些脚本线下使用K8s kubectl工具部署服务。
集群管理员用户只需在管理节点完成启动脚本编写、业务配置和K8s配置,再调用部署脚本,实现自动下发业务配置和启动脚本,自动生成包含节点设备信息的ranktable,并调度Pod到计算节点。
脚本文件所在目录结构如下所示:
├── boot_helper │ ├── boot.sh │ ├── get_group_id.py │ └── update_mindie_server_config.py ├── chat.sh ├── conf ├── delete.sh ├── deployment │ ├── mindie_ms_controller.yaml │ ├── mindie_ms_coordinator.yaml │ ├── mindie_server_heterogeneous.yaml │ └── mindie_server.yaml ├── deploy.sh ├── generate_stream.sh ├── gen_ranktable_helper │ ├── gen_global_ranktable.py │ └── global_ranktable.json └── log.sh
关键目录及文件解释如下所示:
部署样例如下所示,以下操作均在部署脚本路径下完成:
kubectl create namespace mindie
"plugin_params": "{\"plugin_type\":\"prefix_cache\"}"
"enablePrefixCache": true
“tls_enable”为控制是否使用HTTPS的开关:
建议用户打开tls_enable,确保通信安全,如果关闭则存在较高的网络安全风险。
在部署脚本目录中的deployment目录下找到mindie_server.yaml、mindie_ms_coordinator.yaml和mindie_ms_controller.yaml文件。
首先配置容器内mindie安装的目录:根据制作镜像时实际的安装路径,修改MINDIE_USER_HOME_PATH的value值,如安装路径是/xxx/Ascend/mindie, 则配置为/xxx 。
export MINDIE_USER_HOME_PATH={镜像的安装路径}
使用以下命令拉起集群。
bash deploy.sh
执行后,会同步等待global ranktable生成完成,如长时间处于阻塞状态,请ctrl+c中断后查看集群Pod状态,进行下一步的调试定位。
syncFrequency: 5s
然后使用以下命令重启kubelet:
swapoff -a systemctl restart kubelet.service systemctl status kubelet
需在待部署服务的计算节点上修改Docker配置文件后重启Docker:
vim /etc/docker/daemon.json
"log-opts":{"max-size":"500m", "max-file":"3"}
参数解释:
max-size=500m:表示一个容器日志大小上限是500M。
max-file=3:表示一个容器最多有三个日志,超过会自动滚动更新。
systemctl daemon-reload systemctl restart docker
通过kubectl命令查看Pod状态:
kubectl get pods -n mindie
如启动4个MindIE Server实例,回显如下所示:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES mindie-ms-controller-7845dcd697-h4gw7 1/1 Running 0 145m xxx.xxx.xxx ubuntu10 <none> <none> mindie-ms-coordinator-6bff995ff8-l6fwz 1/1 Running 0 145m xxx.xxx.xxx ubuntu10 <none> <none> mindie-server-7b795f8df9-2xvh4 1/1 Running 0 145m xxx.xxx.xxx ubuntu <none> <none> mindie-server-7b795f8df9-j4z7d 1/1 Running 0 145m xxx.xxx.xxx ubuntu <none> <none> mindie-server-7b795f8df9-v2tcz 1/1 Running 0 145m xxx.xxx.xxx ubuntu <none> <none> mindie-server-7b795f8df9-vl9hv 1/1 Running 0 145m xxx.xxx.xxx ubuntu <none> <none>
如观察Pod进入Running状态,表示pod容器已成功被调度到节点并正常启动,但还需要进一步确认业务程序是否启动成功。
通过脚本示例提供的log.sh脚本可查询这些Pod的标准输出日志,查看是否出现异常:
bash log.sh
kubectl logs mindie-server-7b795f8df9-2xvh4 -n mindie
kubectl exec -it mindie-server-7b795f8df9-2xvh4 -n mindie -- bash
需修改chat.sh中的IP地址为集群管理节点宿主机的IP地址,其中role配置为user。
bash chat.sh
bash delete.sh