标准答案

  1. 保留历史 ReplicaSet 和镜像 digest 能恢复应用代码,但不自动恢复数据库 schema、数据和外部资源。
  2. 发布应采用向后兼容的扩展/迁移/收缩步骤,保证新旧版本并存期间都能工作。
  3. 回滚前确认旧版本能读取当前数据、处理当前消息和使用当前配置,必要时执行前向修复。
  4. 验收要看业务成功率、数据对账、队列积压和依赖状态,不只看 rollout history。

题目解析

rollout undo 主要恢复 Deployment 的 Pod template 和 ReplicaSet,不会自动恢复数据库 schema、已写入数据、消息格式、外部资源、Secret 或配置。新旧版本并行期间,代码和数据必须保持兼容,否则镜像回到旧版本仍可能无法工作。

可靠回滚通常采用先扩展 schema、部署兼容代码、迁移数据、再收缩旧字段的方式,并保留前向修复和补偿路径。执行回滚前确认旧制品 digest、配置、依赖和数据可读,完成后看业务成功率、对账、积压和外部副作用。

常见误区

  • 误区:只执行 kubectl rollout undo。改正:同时准备兼容配置、数据库、消息、Secret 和外部资源的恢复方案。
  • 误区:把配置和数据库变更排除在回滚计划外。改正:把所有不可逆状态变更纳入发布设计和演练。

作者信息