已用 Docker 或 Kubernetes 承载 OpenClaw Gateway 的团队在 2026 年发版节奏加快时,如果只关注「容器能起」,却未把 HTTP 探活路径、就绪语义与滚动策略写进同一套变更单,常见事故是:启动期被 liveness 误杀、depends_on 只等容器起不等业务就绪、或把模型供应商 429误当成 Gateway 本体崩溃而无限重启。📌 本文与《Docker 生产向部署》《版本升级与迁移》《provider 降级》分工,给出六类可写进 RCA 的痛点、liveness/readiness/startup 对照表、Compose 与 K8s 映射、可复制 YAML/Compose 片段、六步发布 Runbook、三条面板口径;并说明如何把 Gateway 落在可值班的远程 Mac执行面上。
Gateway 在 2026.x 周期内持续补齐面向编排的 HTTP 端点(具体路径与端口以你锁定的镜像 tag / Release Notes为准,常见命名包括 /health、/ready、/healthz 等变体)。下列痛点建议直接写进 RCA,并与《doctor 与装后排错》中的症状分诊共用同一词汇表。
127.0.0.1 通而 ClusterIP 不通时,误判为应用故障。与《三平台安装入门》对照:安装篇解决「第一次跑起来」;生产篇解决「长期值班」;本篇解决编排层如何判定健康;升级迁移篇解决换镜像时的窗口与回滚。
Kubernetes 三类探针与 Docker healthcheck 的「是否重启容器」语义并不完全相同;下表给出可放进架构评审附件的读法。
| 检查类型 | 失败时典型动作 | 适合验证什么 | OpenClaw 场景建议 |
|---|---|---|---|
| startupProbe | 在成功前不触发 liveness 失败 | 冷启动很慢但有终点 | 首次拉配置、建本地索引、连依赖耗时分钟级时优先加 |
| livenessProbe | 重启容器/Pod | 进程死锁、无响应 | 避免依赖外部 LLM;只反映 Gateway 进程自身能否响应最小自检 |
| readinessProbe | 从 Service 摘流 | 暂不可接流量 | 可包含「最小模型 ping」或「配置加载完成」;与 provider 降级策略对齐 |
| Docker healthcheck(无 K8s) | 标记 unhealthy,是否重启取决于策略 | 单机 Compose 编排 | 与 depends_on: condition: service_healthy 组合使用(Compose v2 语法以文档为准) |
把「健康」翻译成具体字段,可减少上线夜里的口头对齐成本。
| 维度 | Docker Compose(示例思路) | Kubernetes Deployment |
|---|---|---|
| 探测命令 | healthcheck.test 内嵌 curl/wget | httpGet 或 exec 探针 |
| 启动宽限 | start_period | startupProbe 或较大的 initialDelaySeconds |
| 摘流语义 | 依赖反向代理/上层 LB 自建;或仅用 health 标记 | readinessProbe 直接控制 Endpoints |
| 滚动 | 手工 compose up 顺序或外部 CD | maxSurge / maxUnavailable / minReadySeconds |
# 片段示例:务必替换 PORT 与 path 为当前版本文档中的值
# Docker Compose(节选)
healthcheck:
test: ["CMD-SHELL", "curl -fsS http://127.0.0.1:${GATEWAY_PORT}/health || exit 1"]
interval: 15s
timeout: 3s
retries: 5
start_period: 120s
# Kubernetes(节选)
readinessProbe:
httpGet:
path: /ready
port: http
initialDelaySeconds: 10
periodSeconds: 10
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 30
periodSeconds: 20
注意:上游可能在 2026.3.x 等版本新增或调整 /health、/ready、/healthz 等端点;复制本文或社区片段前,必须以与你 digest/tag 对应的官方文档为准,并在 staging 用 curl -v 复现状态码。
docker compose exec / kubectl exec 内对 127.0.0.1 探测,再验证 Service 路径。maxUnavailable 与发布窗口关系。若 Gateway 跑在《Linux systemd + Tunnel》路径,探针还应与隧道进程、本机回环地址及上游 LB 健康检查三层一致,否则会出现「隧道进程活着、Gateway 未监听」的假健康。
补充:将 rollout status 或 Compose 升级日志与 Git 变更关联,可在事后复盘时快速判断是探针过紧还是镜像回归。
消费级设备上的睡眠、磁盘波动与不可控的系统更新,会让启动时间与探针阈值持续漂移;一旦与滚动发布窗口叠加,误杀与误流量会消耗值班人时。要把 OpenClaw 与自动化代理跑在可预期 SLA 的执行面,需要独占算力、稳定网络出口与可按峰值扩展的节点。
碎片化自管机也难做到多地区低延迟与合同化运维:探针调参、隧道与宿主机重启的耦合在笔记本上更难标准化。对需要7×24 可观测、可滚动、可回滚的 Gateway 而言,把执行层落在专业多地区 Apple Silicon 云 Mac 上,通常比临时设备更符合生产节奏。MACCOME 提供 Mac Mini M4 / M4 Pro 物理节点与弹性租期,可作为 Gateway 常驻或构建/自动化混合负载的执行面;先查 帮助中心 对齐接入与账单表述,再结合 租赁价格 与《多地区节点与租期指南》落单。
试点建议:在目标区域短租一台节点,跑满「容器内探针 + Service 探针 + 一次完整滚动」三步验收,再绑定月租/季租。
常见问题
探活失败但 UI 能开,该信谁?
以编排层配置的 URL 与返回码为准;需要对照价格与区域时打开 租赁价格说明,但探针问题应先在 staging 用容器内 curl 复现。
和 Docker 生产篇如何一起用?
生产篇写卷、令牌与常驻;本篇写探针与滚动。升级时两篇与《升级迁移》同附在变更单上。
429 要不要写进 liveness?
一般不要;应走《provider 降级》的分流与退避,readiness 是否感知外部依赖由 SLO 决定。