refactor(cluster): 通用化第四个 Worker 节点接入

将原宁波专用接入脚本改为由环境变量控制节点名称、站点和 WireGuard 端口,支持香港双物理节点 Worker 池。增加候选节点启用开关和服务商网络许可门禁,未明确批准时禁止任何 WireGuard 或 K3s 写操作。同步调整生产验收、巡检、拓扑校验和运行手册。\n\n验证:\n- scripts/cluster 全部 Shell 脚本 bash -n\n- scripts/cluster 全部 ShellCheck\n- git diff --check\n- 本地凭据值扫描\n- 当前三节点 WireGuard/K3s/PostgreSQL 只读基线检查
This commit is contained in:
2026-08-01 11:23:19 +08:00
parent e77bd17754
commit ed3b970178
7 changed files with 175 additions and 93 deletions
+21 -10
View File
@@ -2,29 +2,40 @@
## 范围与目标
本手册覆盖宁波、香港、洛杉矶三节点迁移。宁波和香港承载 API、Web、River Worker 与
CloudNativePG洛杉矶只作为 K3s server/etcd 仲裁节点,并带
本手册覆盖宁波、香港、洛杉矶三个 K3s server 和一个可选专用 Worker agent。宁波、香港
承载 API、Web 与 CloudNativePGWorker 只调度到带 `easyai.io/worker=true` 标签的节点。
洛杉矶只作为 K3s server/etcd 仲裁节点,并带
`easyai.io/witness=true:NoSchedule` 污点。
二台宁波服务器是纯 K3s agent,不加入 etcd 或 CloudNativePG。它使用节点名
`easyai-ningbo-worker-2`、WireGuard 地址 `10.77.0.4`,并归入逻辑 `ningbo` Worker 池。
4 台服务器是站点可配置的纯 K3s agent,不加入 etcd 或 CloudNativePG。节点名和逻辑站点
分别由 `AI_GATEWAY_WORKER_NODE_4_NAME``AI_GATEWAY_WORKER_NODE_4_SITE` 指定,固定使用
WireGuard 地址 `10.77.0.4`。当前计划节点为 `easyai-hongkong-worker-2`,归入逻辑
`hongkong` Worker 池;稳定基线为宁波 0 副本、香港 2 副本,并跨香港两台物理机分布。
`easyai.io/worker-only=true:NoSchedule` 污点确保除 Worker 外的业务 Pod 不会调度到该机;
`easyai.io/worker=true` 标签确保容量控制器只把专用 Worker 节点纳入资源预算。接入使用:
```bash
./scripts/cluster/add-ningbo-worker-node.sh all
./scripts/cluster/add-worker-node.sh preflight
./scripts/cluster/add-worker-node.sh all
```
新节点与宁波、香港、洛杉矶使用 WireGuard 全互联直连,不经过中继。公网 K3s 直连虽然可以
单独保护 API TLS,但当前 Flannel、Pod 和数据库网络依赖 `10.77.0.0/24`,禁止改成未加密的
公网 VXLAN。巡检以 10 包丢包率低于 1%为硬门禁;宁波和香港路径 RTT 低于 80 ms,洛杉矶
路径低于 300 ms。新节点监听 UDP/443;实测 UDP/51820 在香港方向存在 QoS 抖动,禁止在
未重新完成三轮六向链路验收前改回默认端口。
路径低于 300 ms。新节点默认监听标准 UDP/51820,可通过
`AI_GATEWAY_WORKER_NODE_4_WIREGUARD_PORT` 配置;不得为了绕过服务商风控擅自伪装端口。
本地 `.env.local` 只保存 `AI_GATEWAY_NINGBO_WORKER_HOST` 和 SSH 接入密码,必须保持 `0600`
且不得进入 Git。新节点只保留原有 SSH 入口,封锁 K3s API、kubelet、VXLAN 和全部 NodePort
公网入口。节点防火墙继续由原有 UFW 管理,接入脚本
服务商必须先通过工单书面确认“仅用于 Kubernetes 私有集群互联,不提供 VPN、代理或流量
转发服务”符合其政策;确认后才可在 `.env.local` 设置
`AI_GATEWAY_WORKER_NODE_4_NETWORK_APPROVED=true`。未设置时,脚本只允许执行只读
`preflight`,所有 WireGuard 与 K3s 写操作都会停止。
本地 `.env.local` 保存 `AI_GATEWAY_WORKER_NODE_4_HOST/NAME/SITE` 和 SSH 接入密码,必须保持
`0600` 且不得进入 Git。新节点只保留原有 SSH 入口,封锁 K3s API、kubelet、VXLAN和全部
NodePort 公网入口。节点防火墙继续由原有 UFW 管理,接入脚本
禁止安装与 UFW 冲突的 `iptables-persistent`;UFW 未安装或未启用时必须在预检阶段停止。
节点完成加入和验收后才设置 `AI_GATEWAY_WORKER_NODE_4_ENABLED=true`;候选服务器仅写入本地
配置但尚未加入时必须保持 `false`,避免日常巡检误把候选机计入生产拓扑。
生产上线前的双节点高媒体负载、Worker 强杀和 P24/P28/P32 容量搜索见
[生产同构验收模式与高媒体压力测试](production-acceptance.md)。