背景
有状态副本升级不只涉及 Pod 重建,还涉及数据格式、复制协议和存储恢复。partition 可以分阶段升级,但无法替应用保证数据兼容。
核心判断
- 先确认新旧版本能共同工作,并保留备份与恢复方案。
- 利用 ordinal 和 partition 控制升级范围,验证后逐步推进。
- 观察复制延迟、就绪与数据一致性,而不是仅看 Pod Running。
最小示例
下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。
updateStrategy: { type: RollingUpdate, rollingUpdate: { partition: 2 } }
podManagementPolicy: OrderedReady
边界与误区
片段属于 StatefulSet spec,仍需服务名、选择器与模板。OrderedReady 不是应用层安全证明;新版本写入不可逆格式后,镜像回滚可能无法恢复服务。
验证方式
在预演环境升级最高序号副本,检查重建、复制追赶和请求结果;再模拟升级卡住,验证人工干预与数据恢复步骤。
小结
有状态升级要同时考虑数据格式、选主、持久卷、客户端兼容和可恢复回滚。