MongoDB Docker版从4.4.18升级至6.0在K8s中遇CrashLoopBackOff求助
MongoDB 4.2 -> 6.0 升级缺失步骤(Kubernetes环境)
核心前提
MongoDB 不支持跨大版本直接升级(比如从4.x直接跳到6.x),必须遵循 4.2 → 4.4 → 5.0 → 6.0 的渐进式路径,且每个大版本升级完成后都要更新featureCompatibilityVersion(FCV),确保数据格式和特性完全兼容当前版本。
具体修复步骤(针对你的场景)
1. 回滚到MongoDB 4.4.18镜像
把K8s部署清单里的镜像改回 docker.io/mongo:4.4.18,等待Pod正常启动,确保数据可访问。
2. 升级FCV到4.4
进入MongoDB容器执行命令:
kubectl exec -it <你的MongoPod名称> -- mongosh
在MongoShell中执行:
use admin db.adminCommand( { setFeatureCompatibilityVersion: "4.4" } )
等待命令执行完成,确认FCV已更新:
db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
返回结果里的featureCompatibilityVersion应显示为4.4。
3. 升级到MongoDB 5.0镜像
修改K8s部署清单的镜像为 docker.io/mongo:5.0,等待Pod重启并正常运行。
4. 升级FCV到5.0
再次进入MongoDB容器,执行:
use admin db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
确认FCV更新为5.0。
5. 升级到MongoDB 6.0镜像
最后修改部署清单的镜像为 docker.io/mongo:6.0,等待Pod启动,此时FCV为5.0,符合6.0的要求,Pod应该能正常运行。
6. 可选:升级FCV到6.0(稳定后操作)
待6.0版本稳定运行一段时间后,可将FCV升级到6.0以启用6.0的全部新特性:
use admin db.adminCommand( { setFeatureCompatibilityVersion: "6.0" } )
关键注意事项
- 每个版本升级后,必须等待Pod完全就绪、数据无异常后,再执行FCV更新,不能跳过这一步。
- 如果是副本集/分片集群,需要确保所有节点都完成版本升级后,再更新FCV。
- 升级前建议备份数据,避免操作失误导致数据丢失。
内容的提问来源于stack exchange,提问作者PatPanda
相关产品推荐
相关产品推荐

