StatefulSet 保留稳定身份和存储,但这不等于应用天然支持滚动升级。版本兼容、主从顺序、数据迁移和探针设计共同决定发布是否安全。
发布前确认
kubectl get sts app -n production -o yaml
kubectl get pod -n production -l app=app -o wide
kubectl get pvc -n production
确认镜像支持新旧版本共存,数据库格式可向后兼容,并核对 PDB、反亲和性和可用节点。OrderedReady 会在前一个 Pod Ready 后继续,但错误的 readiness probe 可能过早放行。
用 partition 分批
updateStrategy:
type: RollingUpdate
rollingUpdate:
partition: 2
三副本时先只更新序号 2,观察复制延迟、错误率和数据一致性,再逐步将 partition 降为 1、0。每一步都应有明确观察窗口。
回退注意事项
- 仅回退镜像不能撤销不可逆 schema 迁移
- Pod 卡住时先读事件和日志,不连续强删
- 主节点切换应遵循应用自身的选主规则
OnDelete策略需由发布流程显式控制删除顺序
收尾清单
发布后验证每个成员的角色、复制状态、PVC 挂载和重启次数。保留旧版本兼容窗口,并把 partition 操作和业务验证纳入标准变更单。