首页/云/Kubernetes 速查/Deployment 滚动更新策略 RollingUpdate

Deployment 滚动更新策略 RollingUpdate

默认发布策略:按 maxSurge/maxUnavailable 控制新旧副本配比,新 Pod 就绪才继续替换,实现不中断发布。

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

RollingUpdate 是什么

RollingUpdate 是无状态工作负载的默认发布策略:一边拉起新版本的副本,一边缩减旧版本的副本,用两个参数控制「最多能多出多少」与「最多允许多少不可用」。推进的条件是新副本通过就绪检查,因此配置好就绪探针之后,替换过程对外表现为持续可用。

另一种策略与卡住的情况

另一种策略是先删光旧副本再创建新副本,过程必然中断,只适合可以接受停机的场景。滚动更新卡住时表现为副本数长期停在中间、新副本一直不就绪,超过推进超时后状态条件会标记为超时期,此时应查看新副本的就绪原因,而不是急着重启控制器。

基本信息

适用环境任何 Kubernetes 发行版的 Deployment 默认策略
配置位置spec.strategy.type 与 spec.strategy.rollingUpdate
两个参数maxSurge 控制超出期望副本的上限,maxUnavailable 控制不可用上限
取值形式整数或百分比,百分比按期望副本换算
推进条件新副本就绪;就绪由就绪探针与稳定时长共同决定
超时判定由 progressDeadlineSeconds 决定,超时后标记为推进超时

典型使用场景

  • 日常发布:修改镜像标签后由控制器自动完成无中断替换
  • 慢启动服务发布:放宽不可用上限、提高超时时间,给新版本足够准备时间
  • 资源紧张时发布:把超出上限设为 0,用先缩后扩换取不多占资源
  • 数据库迁移配套发布:把不可用上限设为 0,保证任意时刻都有可用实例
  • 紧急修复:提高替换速度,尽快让新版本覆盖全部副本
  • 回滚:切换回上一个修订版本,同样以滚动方式完成

策略配置

策略配置
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 25%          # 可超出期望副本的上限,数字或百分比
      maxUnavailable: 25%    # 更新期间允许不可用的上限
  minReadySeconds: 10        # 新副本就绪后再稳定多久才计入可用
  progressDeadlineSeconds: 600   # 超过此时长判定推进超时

观察发布

观察发布
kubectl rollout status deploy/web --timeout=300s   # 阻塞等待直到完成或超时
kubectl get rs -l app=web                            # 看新旧副本集的比例
kubectl get pods -l app=web -w                       # 观察逐个替换的过程
kubectl describe deploy web | grep -A5 Conditions    # 卡住时看状态条件

参数语义

参数含义取值建议
maxSurge超出期望副本的 Pod 数上限,先扩后缩节点有余量时提高,能加快发布速度
maxUnavailable低于期望副本的可用数上限对可用性敏感的服务设为 0
两者同时为 0无效组合,发布无法推进至少让其中一个大于 0
minReadySeconds新副本就绪后需稳定多久才计入可用启动期抖动明显的应用适当加长
progressDeadlineSeconds多久没有进展就判定超时慢启动应用要放宽,否则误报失败

发布不掉线的条件

  • 就绪探针能真实反映「可以接流量」,而不是固定返回成功
  • 副本数足够多,缩容期间剩下的实例能扛住流量
  • 新实例启动时间与就绪判定匹配,避免过早进入后端
  • 优雅终止逻辑正确,旧实例收到终止信号后能把在途请求处理完
百分比取值会按期望副本数换算并取整,副本数很少时要留意实际算出来的绝对值是否符合预期。
发布卡住时先看新副本为什么不就绪:镜像拉取、配置缺失、探针路径不对都可能,逐一排除比直接回滚更有价值。
把不可用上限设为 0 并用百分比表达超出上限时,集群需要有额外资源才能容纳新副本,否则新副本会因调度失败而卡住。

易错点

  • 两个参数都设为 0:发布完全无法推进,状态一直停在过渡态,容易误以为是控制器故障
  • 没有就绪探针:新副本一创建就被当作可用,发布速度很快但用户请求大量失败
  • 不可用上限设得过大:可用副本数阶段性减少,流量高峰发布直接打挂服务
  • 超出上限设为百分比而集群资源吃紧:新副本调度不上去,发布卡在中途
  • 忽略优雅终止:旧实例被立刻切断连接,正在处理的请求丢失,表现为发布期间零星报错

数据来源与参考

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