跳转至

健康检查与回滚

更新命令成功不等于应用可用。健康检查用于验证更新结果;回滚是操作员确认后的独立操作,更新或探测失败都不会自动回滚。

选择健康检查

部署后由后台持久化执行就绪观察,重启后继续。

策略 适用情况
自动 优先使用运行时能力,适合首次配置
运行时原生 容器已有 healthcheck,或 Kubernetes 工作负载的 rollout 状态;没有 healthcheck 时“运行中”不等于业务就绪
Helm 状态 Helm Release 的发布状态
手动 HTTP 有明确的公网健康端点,需要检查状态码或响应内容
手动 TCP 只需确认端口可连接,不验证应用协议
关闭 在外部自行验证

HTTP 主机必须解析为公网地址,端口限 HTTP 80/8080、HTTPS 443/8443/9443,不跟随重定向。建议显式填写期望状态码(如 200,204);未填写时接受 200–399,但重定向仍被拒绝。

默认观察总期限 600 秒、单次超时 10 秒、间隔 5 秒、稳定期 10 秒,可在执行器中单独覆盖。Kubernetes 观察会跟踪本次目标 Pod:Pod 被替换或重启次数增长会重置稳定计时,读取不到 Pod 时不判定成功。使用 Digest 引用时还会核对各副本实际运行的镜像摘要;Tag 引用无法证明重新推送前后内容相同。

失败处理策略

就绪观察遵循执行器的“失败时”设置:

  • 标记为失败:任务失败。
  • 标记为降级:更新保持已应用,任务以“部署已标记为降级”结束,运行记录以 degraded: 开头。

两者都不会撤销已完成的更新;目标发生变化或无法观察时转为人工处理。探针失败只记录归类原因(超时、连接被拒绝、状态码不符等),不记录 URL 或响应内容。

Kubernetes 镜像拉取宽限

Kubernetes Deployment 的新 Pod 因超时、临时断连或仓库 5xx 等可恢复错误拉取失败时,就绪期限到达后会进入只读宽限期:每 30–120 秒复检,不重新部署、不增加尝试次数,重启后不重置期限。宽限期内就绪,原任务变为成功并保留延迟证据;仍未就绪则按超时失败。镜像不存在、鉴权失败、CrashLoopBackOff、OOM 等确定故障直接结束。

  • RELEASETRACKER_READINESS_PULL_GRACE_SECONDS:默认 1800 秒,范围 0–3600,0 为禁用;重启后对新任务生效。
  • 仅适用于 Deployment,不适用于 StatefulSet、DaemonSet、Helm 或其他运行时。
  • 已失败的任务不会自动重放,可在任务页发起只读就绪复检。
  • 采用 Recreate 策略时镜像不可用会导致服务中断,宽限期不是可用性保证,请配合集群告警。

部署后只读巡检

设置 RELEASETRACKER_RUNTIME_HEALTH_INTERVAL_SECONDS(300–86400 秒,默认 0 关闭)后,系统定期只读检查最近一次成功部署且经过就绪验证的目标,包括已配置的 HTTP/TCP 探针。连续三次不健康、目标漂移、无法读取或 Pod 反复重启时,向订阅“任务处理异常”的通知渠道发送一条去重提醒。

每分钟最多检查 16 个到期目标,配置值是最小间隔而非实时保证;正在更新、等待就绪或需要人工处理的目标会跳过。巡检不会部署、回滚或修改历史记录,也不替代集群和业务监控。

快照与保留

更新前会捕获重建目标所需的配置(覆盖范围见支持范围)。快照不包含持久卷、业务数据库或数据迁移结果,也不保证还原容器 / Pod ID。

在执行器快照历史中核对时间和镜像。锁定的快照不参与自动清理、不能直接删除;正在用于回滚的快照受保护。保留数量见系统设置,受保护的快照会使实际数量超过设定值。

快照 API 返回完整性状态:

状态 含义
verified 内容与保存的 SHA-256 和大小一致
legacy_unverified 旧快照没有校验元数据,不等于损坏
invalid 校验失败,不能用于恢复

单个快照上限 2 MiB。SHA-256 是一致性校验而非签名,不能防御同时修改内容和摘要的数据库写入者。

回滚前预检(API)

界面暂无专用预检按钮,可用管理员令牌调用(RT_BASE 含部署子路径):

curl --fail-with-body -X POST \
  "$RT_BASE/api/executors/$EXECUTOR_ID/rollback/preview" \
  -H "Authorization: Bearer $RT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"snapshot_id": 42}'

省略请求体时使用最新快照。以 snapshot_valid、integrity_status、validation_error 判断结果,请求成功本身不代表验证通过。预检不创建记录、不修改运行时,也不保证镜像仍可拉取或回滚一定成功。

执行恢复

  1. 暂停可能触发新更新的自动策略,核对实际运行状态。
  2. 确认应用支持降级,并备份受影响的应用数据。
  3. 选择可用快照,在执行器详情中手动回滚。
  4. 查看回滚运行记录,并独立验证应用健康。

SSH Compose 目标使用项目恢复流程,见SSH Compose 目标。实例数据库恢复与执行器回滚不同,见备份恢复。