裸机上你听见的「端口起来了」往往等价于进程绑定成功;在 Kubernetes 里,同样一行日志背后还要经过 Service Endpoints、kube-proxy(或 CNI)、NetworkPolicy 与 cgroup memory 四层解释。OpenClaw Gateway 若仍沿用开发机上的 127.0.0.1 心智,很容易在集群里出现「curl 进 Pod 能通、经 Service 全挂」或「就绪永远红但进程明明活着」的假阴性。
本文把验收拆成可签字的证据链:镜像 digest 与 Helm values 哈希、requests/limits 与 OOM 事件对齐、bind=lan 与 targetPort 一致、port-forward 冒烟与集群内探测对照。若你同时在 远程 Mac 上评估 Docker Compose 与裸机,可把本节矩阵当作「同版本、双轨道」验收的母版。
- 版本漂移与不可复现:生产使用
:latest 或「只记 tag 不记 digest」,两周后同 tag 重建即行为变化;回滚时无法证明旧副本与当前 incidents 是否同一二进制。
- 绑定地址、Service 与探针三者打架:网关监听回环而 readiness 去敲 Pod IP;或 bind=lan 但 NetworkPolicy 只放行来自 Ingress 网段,健康检查源不在白名单,导致 NotReady 与流量中断并存。
- Resource 配额与隐性成本:未设 requests 时调度看似成功,节点挤爆后触发延迟 OOM;limits 过小则在工具调用高峰被 cgroup 直接杀进程,日志只剩 Exit 137,若无指标很难区分泄漏与正常尖峰。
用一张表对齐「谁在什么约束下更省事」,避免把裸机 launchd 的经验原样粘贴进 Pod。
监听绑定 需
bind=lan(或 0.0.0.0)以便 Service 命中;回环仅适合同 Pod sidecar 可配合反代只绑 127.0.0.1,由 nginx/Caddy 终止 TLS 临时验收
kubectl port-forward 适合冒烟,不等价集群内全链路
curl 本机环回或 SSH 隧道,路径更短但缺少多副本视角 典型故障回滚
kubectl rollout undo 或固定上一 digest 替换二进制/镜像标签 + launchctl kickstart -k,注意单实例锁
- 钉死版本:CI 在部署工单里写入镜像
repo@sha256:…、Helm chart 版本与 values.yaml 的 git SHA;禁止生产流水线依赖浮动 tag。
- 声明 Resource:为网关设置
requests.memory 接近 P95 常驻工作集,limits.memory 留出工具调用与 JSON 缓冲峰值;CPU requests 避免调度到已饱和节点。
- 对齐 bind 与端口:若流量经 Service/Ingress 进入,网关配置使用
bind=lan(或文档规定的双栈监听),并核对 containerPort、targetPort、探针端口三者一致。
- 配置探针:readiness 使用与真实流量相同的三元组(协议、主机、路径);为冷启动设置
initialDelaySeconds / startupProbe,避免 NotReady 误杀正在加载 skills 的进程。
- port-forward 冒烟:运维机执行
kubectl port-forward deploy/openclaw-gateway 18789:18789(端口按实际替换),完成最小健康检查与单条工具调用;同时在集群内 Pod 发起一次同源探测,记录两条路径是否一致。
- 观测与告警:将重启次数、OOMKilled、就绪=false 持续时间、5xx 与网关队列深度绑定到同一仪表盘;变更窗口前后各保留 24h 对照。
- 裸机对照签字:在远程物理 Mac 上用同 digest 的本地运行方式(或 客户端到 macOS 网关的联调 Runbook)重复关键健康信号,差异写入交付说明。长期无人值守场景可参考 Mac mini 上 OpenClaw 稳定性优化 的基线。
在 Pod 内监听非回环地址并不等于对公网开放;暴露面由 Service type、Ingress、NetworkPolicy 与集群出口策略共同决定。应把「进程监听」与「谁能路由到 Pod」分层审计。
看 kubectl describe pod 的 Last State、节点内存压力事件与容器退出码 137;对照同一时间段的网关并发与单请求体大小,避免把正常尖峰误判为泄漏。
优先核对探针 URL 是否指向了错误端口或路径、是否缺少 startupProbe,以及 NetworkPolicy 是否放行 kubelet 探针源;再考虑应用层路由是否在就绪后才挂载。
保留上一版本的 digest 与 Helm revision;kubectl rollout undo 后立刻跑一次集群内健康探测与最小业务握手,并把证据链附在变更单上。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/252049.html