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

使用OnDelete更新策略的StatefulSet关闭Pod后仍创建旧版本Pod的问题

问题分析与解答

这是预期行为,并非Bug,核心是混淆了Pod的「重启」和「重建」逻辑,以及OnDelete更新策略的触发条件:

  • StatefulSet的OnDelete更新策略生效条件是:手动删除Pod(通过kubectl delete pod <pod-name>命令),此时Kubernetes才会使用更新后的StatefulSet模板重新创建Pod。
  • 执行db.adminCommand( { shutdown: 1 } )仅会让MongoDB进程退出,Kubernetes检测到容器进程终止后,会按照原Pod的定义重启容器,并不会触发StatefulSet的模板更新逻辑——因为这个Pod的资源对象本身没有被删除,只是容器实例重启了。

正确操作步骤

要让新Pod使用更新后的模板,需在执行MongoDB shutdown之后手动删除对应Pod:

  1. 对目标MongoDB节点执行db.adminCommand( { shutdown: 1 } )完成安全关闭
  2. 执行kubectl delete pod <pod-name>删除该Pod
  3. Kubernetes会使用更新后的StatefulSet模板重新创建这个Pod

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 16:59:51