Kubernetes和Mongo卷

时间:2018-04-13 22:20:42

标签: mongodb volume kubernetes

我一直在尝试在Kubernetes minikube上运行一个示例mongo项目但是对于我的生活我无法保持音量持续

任何人都有任何建议

kubectl create -f https://raw.githubusercontent.com/brianbruff/kubernetesPlayground/master/mongo.yaml

我注意到/ data文件夹似乎已挂载,如果我在节点上创建文件,它们会出现在单个pod中(反之亦然)

但由于某种原因,我对mongo / data / db文件没有好运,就像没有安装卷的db子文件夹一样

任何赞赏的建议

解决方案: 好吧这很尴尬...... 我的坚持测试是 创建一个数据库,然后查看它是否持久化

但mongo不保存/持久化数据库,除非其中有集合或文档!

是的,我觉得很尴尬......

2 个答案:

答案 0 :(得分:1)

原因是即使您在Pod中将/data从主机挂载到/data,容器中的/data/db也会从其他位置挂载。

根据https://hub.docker.com/_/mongo/的建议,您应该在主机上将/data挂载到容器上的/data/db

如果您转到minikube ssh并查看为mongo db docker inspect <mongo-db-container>容器装入的所有卷,您将看到以下两个Mounts(以及其他):

        {
            "Type": "volume",
            "Name": "af5f765585b153526dd7eab75a9ee4b62a0fb59d3482a23dc97b8fd23267557d",
            "Source": "/var/lib/docker/volumes/af5f765585b153526dd7eab75a9ee4b62a0fb59d3482a23dc97b8fd23267557d/_data",
            "Destination": "/data/db",
            "Driver": "local",
            "Mode": "",
            "RW": true,
            "Propagation": ""
        },
        {
            "Type": "bind",
            "Source": "/data",
            "Destination": "/data",
            "Mode": "rslave",
            "RW": true,
            "Propagation": "rslave"
        },

答案 1 :(得分:1)

我也面临着同样的问题。但是在进行一些小的更改之后,它对我来说效果很好。

volumeMounts:
        - name: <pvc-name>
          mountPath: "/data/db/"