标准答案

  1. 配置使用类型化 schema 校验,缺失项快速失败但不打印敏感值。
  2. liveness 只判断进程是否需要重启,readiness 判断是否能接流量,探针要轻量。
  3. 构建记录 Python、依赖锁文件、基础镜像和代码版本,发布采用灰度。
  4. 回滚要兼容数据库、消息和缓存格式,并处理已产生的异步任务。

题目解析

配置、健康检查和回滚分别回答三个问题:进程能否用明确输入启动、实例是否应该接收流量、上一版制品能否安全恢复。配置应在启动早期按 schema 校验,Secret 只验证存在和格式,不把值写入异常或日志。

startup probe 用于给慢启动应用准备时间,readiness 表示当前能否接收流量,liveness 表示是否需要重启。探针应尽量检查本进程和必要的本地依赖,避免把一个短暂的下游故障扩散成所有实例同时重启;更深的业务依赖应通过指标和分级降级处理。

可回滚制品不仅包含代码,还包括 Python、锁文件、基础镜像和配置 schema。数据库迁移、消息格式和缓存键必须考虑向后兼容;发布前保存旧制品并做回滚演练,不能等线上故障时才发现旧代码读不了新数据。

常见误区

  • 误区:让 liveness 探针调用完整业务链路。改正:liveness 保持轻量,readiness 才表达接流量条件,深层依赖用指标和降级处理。
  • 误区:把 Secret 放进仓库、异常消息或启动日志。改正:使用受控 Secret 注入,只记录非敏感的校验结果。
  • 误区:只回滚应用代码。改正:同时确认运行时、依赖、镜像、配置和数据迁移是否兼容,必要时先执行向后兼容的修复。

作者信息