首页/开发/CI/CD 与发布速查/停机重建(Recreate)策略
发布策略60 条

停机重建(Recreate)策略

先终止全部旧 Pod 再创建新 Pod,发布窗口内服务中断;适合无法容忍两版本并存、或独占资源(本地锁、独占许可证、单写者)的服务。

CI/CD 与发布速查开发更新于 2026-10-13

停机重建(Recreate)是什么

Recreate 是 Kubernetes Deployment 的一种发布策略:先终止全部旧 Pod,再创建新 Pod,发布窗口内服务中断。它适合两类服务:无法容忍新旧两版本并存的(协议/状态不兼容),以及独占资源的(本地锁、独占许可证、单写者)。回滚路径简单——改回旧版本镜像重新应用即可,但同样带着一次中断。中断时长等于「旧实例完全停止 + 新实例启动就绪」,要按最坏情况(大镜像拉取、冷启动)预留窗口,把中断当作计划内维护来管理。

基本信息

行为旧 Pod 全部终止后才创建新 Pod
代价发布窗口内服务中断
典型场景独占资源、单实例有状态服务
回滚同路径重建旧版本镜像

典型使用场景

  • 单实例有状态服务:两个版本无法同时持有同一份本地状态。
  • 独占许可证软件:许可证锁绑定单实例,无法双跑。
  • 协议不兼容变更:新旧版本对同一存储/协议解读不同,不能共存。
  • 数据库迁移窗口:配合停机维护完成结构与代码同步切换。
  • 内部工具服务:非核心、可接受短暂不可用的场景优先选简单策略。

Recreate 配置

Recreate 配置
spec:
  strategy:
    type: Recreate
  template:
    spec:
      containers:
      - name: app
        image: registry.example.com/app:1.9.0
# 发布窗口内服务中断, 提前公告
# 回滚: 改回旧 tag 重新应用

与滚动更新对比

维度RecreateRollingUpdate
服务中断有(发布窗口内)无(正常情况)
两版本并存不允许允许
资源峰值较低较高(双倍实例)
适用独占/不兼容服务无状态服务
中断时长 = 旧实例停止 + 新实例启动就绪:按最坏情况(镜像拉取、冷启动)预留窗口并提前公告,别按平均时间估。
把中断变成计划内:选低峰窗口、发公告、核对下游重试与超时策略,服务恢复后验证再关闭维护通知。

易错点

  • 单副本服务用 Recreate 且就绪探针不完整:中断被下游重试与超时放大,补探针与优雅终止。
  • 大镜像冷启动没有预热:首次拉取耗时数分钟,发布窗口被击穿,提前分发镜像到节点。
  • 无公告与状态页:用户当成故障上报,把维护窗口公告纳入发布流程。
  • 用 Recreate 掩盖架构问题:本可外置会话改成滚动更新的场景长期停机发布,定期评估改造。
  • 回滚测试缺失:只验证发布路径不验证回滚路径,回滚同样要演练。

数据来源与参考

  • Kubernetes 文档《Deployments》(Recreate)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌