健康检查与回滚¶
更新命令成功不等于应用可用。健康检查用于验证更新结果;回滚是操作员确认后的独立操作,更新或探测失败都不会自动回滚。
选择健康检查¶
部署后由后台持久化执行就绪观察,重启后继续。
| 策略 | 适用情况 |
|---|---|
| 自动 | 优先使用运行时能力,适合首次配置 |
| 运行时原生 | 容器已有 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 判断结果,请求成功本身不代表验证通过。预检不创建记录、不修改运行时,也不保证镜像仍可拉取或回滚一定成功。
执行恢复¶
- 暂停可能触发新更新的自动策略,核对实际运行状态。
- 确认应用支持降级,并备份受影响的应用数据。
- 选择可用快照,在执行器详情中手动回滚。
- 查看回滚运行记录,并独立验证应用健康。
SSH Compose 目标使用项目恢复流程,见SSH Compose 目标。实例数据库恢复与执行器回滚不同,见备份恢复。