You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes StatefulSet中并行更新所有Pod?

Kubernetes StatefulSet全Pod并行更新方案

StatefulSet默认的RollingUpdate是逐个更新Pod,要实现全Pod并行更新,可以试试这几种方法:

方法1:切换到OnDelete更新策略

把StatefulSet的更新策略改成OnDelete,修改模板后K8s不会自动更新Pod,你手动删掉所有旧Pod,K8s就会用新模板同时重建。配置如下:

updateStrategy:
  type: OnDelete

操作步骤:

  1. 修改StatefulSet的Pod模板(比如更新镜像版本)
  2. 执行命令删除所有关联Pod:kubectl delete pods -l <你的StatefulSet标签>
  3. K8s会同时创建新Pod,完成并行更新

方法2:调整RollingUpdate参数(K8s 1.25+可用)

从K8s 1.25版本开始,StatefulSet的RollingUpdate支持maxUnavailable和maxSurge参数,之前配置没生效可能是写法不对。正确配置示例:

updateStrategy:
  rollingUpdate:
    maxUnavailable: 100%
    maxSurge: 0
  type: RollingUpdate

maxUnavailable: 100%允许所有Pod同时不可用,K8s会一次性更新所有Pod。先确认你的K8s版本是否达标,旧版本不支持这俩参数。

方法3:临时替换成Deployment(按需使用)

如果你的应用不需要StatefulSet的特性(比如稳定的Pod hostname、按顺序绑定存储),可以临时换成Deployment。Deployment本身支持并行更新,配置maxUnavailable: 100%就能实现全Pod同时更新。但这个方法只适合对StatefulSet特性依赖低的场景。

注意点

  • 并行更新有状态应用前,要确认应用能扛住所有Pod同时重启,不会出现数据丢失或服务中断的情况
  • 用OnDelete策略时,提前做好数据备份,避免删Pod后出问题没法恢复

内容的提问来源于stack exchange,提问作者CSUNNY

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 09:06:17