From 64b6562784305f97cef9b60f71914d1f9b6cf4a5 Mon Sep 17 00:00:00 2001 From: douxu Date: Wed, 10 Jun 2026 16:42:29 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20overhaul=20deploy.md=20cleanup=20and=20?= =?UTF-8?q?pg=20verification=20sections=20=20=20-=20add=20pg=20connection?= =?UTF-8?q?=20verification=20commands=20(pg=5Fisready,=20psql=20queries)?= =?UTF-8?q?=20=20=20-=20renumber=20pg=20subsections=20(4.4.2=E2=86=924.4.5?= =?UTF-8?q?)=20to=20accommodate=20new=20section=20=20=20-=20remove=20Mongo?= =?UTF-8?q?DB=20deploy=20section=20(section=204.5)=20from=20modelRT=20depl?= =?UTF-8?q?oy=20guide=20=20=20-=20remove=20MongoDB=20SSH=20tunnel=20port-f?= =?UTF-8?q?orward=20entries=20(27017/30017)=20=20=20-=20rewrite=20section?= =?UTF-8?q?=208=20cleanup=20guide:=20split=20into=20local=20Docker,=20loca?= =?UTF-8?q?l=20run,=20=20=20=20=20and=20K8s(Minikube)=20categories=20with?= =?UTF-8?q?=20scale-down=20and=20full-delete=20options=20=20=20-=20add=20o?= =?UTF-8?q?ne-liner=20kubectl=20delete=20-f=20deploy/k8s/=20for=20full=20t?= =?UTF-8?q?eardown?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/deploy.md | 180 +++++++++++++++++++++++++++++++---------------- 1 file changed, 121 insertions(+), 59 deletions(-) diff --git a/deploy/deploy.md b/deploy/deploy.md index 03d4b7f..27e27bb 100644 --- a/deploy/deploy.md +++ b/deploy/deploy.md @@ -707,7 +707,23 @@ kubectl apply -f deploy/k8s/pg-service.yaml kubectl wait --for=condition=ready pod -l app=postgres --timeout=120s ``` -##### 4.4.2 初始化异步任务表 +##### 4.4.2 连接验证 + +```bash +# 快速检查 PostgreSQL 是否接受连接 +kubectl exec -it $(kubectl get pod -l app=postgres -o jsonpath='{.items[0].metadata.name}') \ + -- pg_isready -U postgres -d demo + +# 进入 psql 执行简单查询确认数据库可用 +kubectl exec -it $(kubectl get pod -l app=postgres -o jsonpath='{.items[0].metadata.name}') \ + -- psql -U postgres -d demo -c "SELECT current_database(), version();" + +# 列出所有数据库(确认 demo 库已创建) +kubectl exec -it $(kubectl get pod -l app=postgres -o jsonpath='{.items[0].metadata.name}') \ + -- psql -U postgres -c "\l" +``` + +##### 4.4.3 初始化异步任务表 PostgreSQL 就绪后执行 1.4 节的建表 SQL,可通过以下方式进入容器执行: @@ -721,14 +737,14 @@ kubectl exec -i $(kubectl get pod -l app=postgres -o jsonpath='{.items[0].metada -- psql -U postgres -d demo < /path/to/init.sql ``` -##### 4.4.3 状态检查 +##### 4.4.4 状态检查 ```bash kubectl get pods -l app=postgres kubectl logs -l app=postgres --tail=30 ``` -##### 4.4.4 清理 +##### 4.4.5 清理 ```bash kubectl delete -f deploy/k8s/pg-service.yaml \ @@ -737,54 +753,6 @@ kubectl delete -f deploy/k8s/pg-service.yaml \ -f deploy/k8s/pg-configmap.yaml ``` -#### 4.5 部署 MongoDB - -```bash -kubectl apply -f deploy/k8s/mongodb-secret.yaml -kubectl apply -f deploy/k8s/mongodb-pvc.yaml -kubectl apply -f deploy/k8s/mongodb-statefulset.yaml -kubectl apply -f deploy/k8s/mongodb-service.yaml -``` - -| 参数 | 值 | 说明 | -| :--- | :--- | :--- | -| **镜像** | `mongo:7.0` | MongoDB 7.0 | -| **NodePort** | `30017` | 集群外访问端口 | -| **用户名** | `admin` | Root 管理员 | -| **密码** | `coslight` | Secret `mongodb-secret` 中配置,生产环境请替换强密码 | -| **存储** | `2Gi` | PVC `mongodb-data` | - -> **注意:** 密码存储在 `mongodb-secret.yaml` 的 `stringData` 中,生产环境应替换为强密码,并避免将明文密码提交至版本库。 - -##### 4.5.1 等待 Pod 就绪 - -```bash -kubectl wait --for=condition=ready pod -l app=mongodb --timeout=120s -``` - -##### 4.5.2 连接验证 - -```bash -kubectl exec -it $(kubectl get pod -l app=mongodb -o jsonpath='{.items[0].metadata.name}') \ - -- mongosh -u admin -p coslight --authenticationDatabase admin -``` - -##### 4.5.3 状态检查 - -```bash -kubectl get pods -l app=mongodb -kubectl logs -l app=mongodb --tail=30 -``` - -##### 4.5.4 清理 - -```bash -kubectl delete -f deploy/k8s/mongodb-service.yaml \ - -f deploy/k8s/mongodb-statefulset.yaml \ - -f deploy/k8s/mongodb-pvc.yaml \ - -f deploy/k8s/mongodb-secret.yaml -``` - ### 5\. 部署 ModelRT(Kubernetes) 所有资源部署在 `default` 命名空间,YAML 文件位于 `deploy/k8s/`。 @@ -1012,7 +980,6 @@ Mac 本地端口 ──SSH隧道──▶ Ubuntu 宿主机 (192.168.1.101) ```bash ssh -L 5432:192.168.49.2:30432 \ - -L 27017:192.168.49.2:30017 \ -L 5671:192.168.49.2:30671 \ -L 15671:192.168.49.2:31671 \ -L 6379:192.168.49.2:30001 \ @@ -1028,7 +995,6 @@ ssh -L 5432:192.168.49.2:30432 \ ```bash ssh -fN \ -L 5432:192.168.49.2:30432 \ - -L 27017:192.168.49.2:30017 \ -L 5671:192.168.49.2:30671 \ -L 15671:192.168.49.2:31671 \ -L 6379:192.168.49.2:30001 \ @@ -1044,7 +1010,6 @@ ssh -fN \ | Mac 本地端口 | Minikube NodePort | 服务 | 说明 | | :--- | :--- | :--- | :--- | | `5432` | `30432` | PostgreSQL | 数据库连接 `localhost:5432` | -| `27017` | `30017` | MongoDB | 数据库连接 `localhost:27017` | | `5671` | `30671` | RabbitMQ AMQP | ModelRT / EventRT 消息队列连接 | | `15671` | `31671` | RabbitMQ Management | RabbitMQ 管理界面 `http://localhost:15671` | | `6379` | `30001` | Redis | 分布式锁 / 数据存储 | @@ -1068,14 +1033,111 @@ kill ### 8\. 后续操作(停止与清理) -#### 8.1 停止容器 +#### 8.1 本地 Docker 部署清理 + +适用于第 1、2 节使用 `docker run` 启动的 PostgreSQL 和 Redis 容器。 ```bash +# 停止容器 docker stop postgres redis -``` -#### 8.2 删除容器(删除后数据将丢失) - -```bash +# 删除容器(容器内数据将同步丢失) docker rm postgres redis ``` + +#### 8.2 本地运行清理 + +适用于第 3 节以 `go run` 或编译后二进制方式在本地启动的 ModelRT 服务。 + +前台运行时直接 `Ctrl+C` 终止;后台运行时查找并终止进程: + +```bash +# 终止 go run 启动的进程 +pkill -f "go run main.go" + +# 或终止编译后的二进制进程 +pkill model-rt +``` + +#### 8.3 K8s(Minikube) 部署清理 + +适用于第 4、5、6 节在 Minikube 中部署的所有资源。 + +##### 8.3.1 分服务清理 + +**仅停止(缩容至 0,PVC 数据保留)** + +将所有 Deployment 和 StatefulSet 缩容至 0 副本,Pod 停止运行但持久卷数据不删除,之后可直接缩容回 1 恢复服务。 + +```bash +# 停止所有 Deployment(Redis / RabbitMQ / ModelRT / Jaeger / Loki / Grafana) +kubectl scale deployment --all --replicas=0 + +# 停止所有 StatefulSet(PostgreSQL,PVC 数据保留) +kubectl scale statefulset --all --replicas=0 +``` + +恢复时: + +```bash +kubectl scale deployment --all --replicas=1 +kubectl scale statefulset --all --replicas=1 +``` + +> **注意:** DaemonSet(Promtail)无法通过 `scale` 停止,如需停用可手动删除其资源:`kubectl delete -f deploy/k8s/promtail-daemonset.yaml`。 + +--- + +**永久清理(删除所有资源,包含 PVC,数据不可恢复)** + +按部署顺序反向删除各服务资源: + +```bash +# 可观测性栈(Grafana / Promtail / Loki / Jaeger) +kubectl delete -f deploy/k8s/grafana-service.yaml \ + -f deploy/k8s/grafana-deployment.yaml \ + -f deploy/k8s/grafana-configmap.yaml \ + -f deploy/k8s/promtail-daemonset.yaml \ + -f deploy/k8s/promtail-configmap.yaml \ + -f deploy/k8s/promtail-rbac.yaml \ + -f deploy/k8s/loki-service.yaml \ + -f deploy/k8s/loki-deployment.yaml \ + -f deploy/k8s/loki-pvc.yaml \ + -f deploy/k8s/loki-configmap.yaml \ + -f deploy/k8s/jaeger-service.yaml \ + -f deploy/k8s/jaeger-deployment.yaml + +# ModelRT 应用 +kubectl delete -f deploy/k8s/modelrt-service.yaml \ + -f deploy/k8s/modelrt-deployment.yaml \ + -f deploy/k8s/modelrt-configmap.yaml \ + -f deploy/k8s/modelrt-secret.yaml +kubectl delete secret modelrt-certs + +# PostgreSQL +kubectl delete -f deploy/k8s/pg-service.yaml \ + -f deploy/k8s/pg-statefulset.yaml \ + -f deploy/k8s/pg-pvc.yaml \ + -f deploy/k8s/pg-configmap.yaml + +# RabbitMQ +kubectl delete -f deploy/k8s/rabbitmq-service.yaml \ + -f deploy/k8s/rabbitmq-deployment.yaml \ + -f deploy/k8s/rabbitmq-users-config.yaml \ + -f deploy/k8s/rabbitmq-config.yaml \ + -f deploy/k8s/rabbitmq-secret.yaml +kubectl delete secret rabbitmq-certs + +# Redis +kubectl delete -f deploy/k8s/redis-service.yaml \ + -f deploy/k8s/redis-deployment.yaml +``` + +##### 8.3.2 一键清理 + +> **注意:** 此操作会删除 `deploy/k8s/` 下所有 YAML 对应的 K8s 资源,包括 PVC,**持久化数据将永久丢失**,请确认后执行。 + +```bash +kubectl delete -f deploy/k8s/ +kubectl delete secret rabbitmq-certs modelrt-certs +```