Kubernetes部署MongoDB重启数据丢失,如何正确配置持久化存储
配置错误及修复方案
- 挂载路径不匹配
官方MongoDB镜像的默认数据持久化目录为/data/db,你当前StatefulSet配置的volumeMounts.mountPath为/var/lib/mongodb,写入的所有数据实际存储在容器的可写层,未写入持久卷,Pod重启后容器可写层被回收,自然出现数据丢失。
修正方式:将StatefulSet的volumeMounts配置修改为:
volumeMounts: - name: "mongodb-persistent-storage" mountPath: "/data/db"
- StorageClass配置不匹配
你创建的PVC指定storageClassName: gp2,但手动创建的PV的storageClassName为local-storage,两者存储类名称不一致,PVC无法绑定到你手动创建的PV,若集群配置了默认存储类,PVC会自动绑定其他符合条件的PV,若未配置默认存储类则PVC会一直处于Pending状态,持久化存储实际未生效。
修正方式:将PVC的storageClassName修改为与PV一致的local-storage:
spec: accessModes: - ReadWriteOnce resources: requests: storage: 5Gi storageClassName: local-storage
- 无效冗余配置
PersistentVolume属于Kubernetes集群级资源,不存在命名空间属性,你在pv.yaml的metadata中添加的namespace: "development"属于无效配置,虽然不会直接导致数据丢失,但属于错误冗余配置,可以直接删除。
内容的提问来源于stack exchange,提问作者SVD
相关产品推荐
相关产品推荐

