背景

有状态副本升级不只涉及 Pod 重建,还涉及数据格式、复制协议和存储恢复。partition 可以分阶段升级,但无法替应用保证数据兼容。

核心判断

  1. 先确认新旧版本能共同工作,并保留备份与恢复方案。
  2. 利用 ordinal 和 partition 控制升级范围,验证后逐步推进。
  3. 观察复制延迟、就绪与数据一致性,而不是仅看 Pod Running。

最小示例

下面保留核心逻辑;业务类型、调用入口和环境配置按项目补齐。

updateStrategy: { type: RollingUpdate, rollingUpdate: { partition: 2 } }
podManagementPolicy: OrderedReady

边界与误区

片段属于 StatefulSet spec,仍需服务名、选择器与模板。OrderedReady 不是应用层安全证明;新版本写入不可逆格式后,镜像回滚可能无法恢复服务。

验证方式

在预演环境升级最高序号副本,检查重建、复制追赶和请求结果;再模拟升级卡住,验证人工干预与数据恢复步骤。

小结

有状态升级要同时考虑数据格式、选主、持久卷、客户端兼容和可恢复回滚。