首页/云/Kubernetes 速查/Deployment 重建策略 Recreate

Deployment 重建策略 Recreate

先终止全部旧 Pod 再创建新 Pod 的发布方式:存在明确的中断窗口,仅适合无法新旧版本并存的场景。

Kubernetes 速查云更新于 2026-10-13

重建式发布是什么

重建策略会先把旧副本全部终止,再创建新副本,中间存在一段完全不可用的窗口。它的价值在于保证新旧版本不并存:需要独占文件锁、独占设备的服务无法接受两个版本同时运行。滚动策略保证可用性,重建策略保证互斥,两者取舍取决于业务能否容忍中断。

基本信息

适用平台Kubernetes 1.20+,部署对象的策略字段
发布行为先缩到零,再创建新副本
可用性存在明确的不可用窗口
适用条件新旧版本不能同时运行
替代方案滚动发布、蓝绿切换、单副本加维护窗口

典型使用场景

  • 服务依赖独占文件锁,两个实例同时启动会互相阻塞
  • 单实例应用挂载独占设备或使用固定主机端口
  • 数据库结构变更前后版本不兼容,必须以整体切换方式发布
  • 测试环境追求发布流程简单,可以接受短暂中断
  • 迁移期应用无法同时处理新旧两种数据格式

策略配置

策略配置
spec:
  replicas: 1
  strategy:
    type: Recreate     # 先终止旧副本,再创建新副本
  template:
    spec:
      containers:
        - name: web
          image: registry.example.com/web:1.27.0

行为验证

行为验证
kubectl patch deploy/web -p '{"spec":{"strategy":{"type":"Recreate"}}}'   # 切换策略
kubectl set image deploy/web web=web:1.27.0                                     # 触发发布
kubectl get pods -l app=web -w              # 观察先缩到零再起新副本
kubectl rollout status deploy/web           # 确认发布完成

两种策略对照

策略发布过程适用判断
滚动发布逐步替换,可用性高默认选择,副本可并存
重建发布先全部停止再创建新旧版本互斥时使用
蓝绿切换两套环境切换流量需要快速回退且资源充足
单副本维护窗口停机窗口内操作可预约中断的非核心业务
修改策略字段本身不会触发新的发布,只有模板变化才会产生新的副本。切换策略后需要有意识地在变更窗口内触发一次发布并验证结果。
重建期间服务完全不可用。生产环境使用前必须确认业务方能接受这段中断,并提前通知相关方,配合健康检查避免长时间挂着不可用状态。

易错点

  • 单副本加重建策略:每次发布都是一次停机,必须有明确的通知与窗口安排
  • 以为改策略就完成切换:策略改动不触发发布,模板不变不会有新副本
  • 生产环境误用重建策略:中断窗口带来真实业务损失,且缺少回退预案
  • 不配就绪探针:新副本尚未真正可用就被视为发布完成,中断时间被拉长

数据来源与参考

  • Kubernetes 官方文档 · Deployment(Recreate Strategy)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌