【问题标题】:How does kubernetes volume mounts map to docker volumeKubernetes 卷挂载如何映射到 docker 卷
【发布时间】:2020-01-29 00:55:17
【问题描述】:

我是 kubernetes 的新手,正在尝试使用卷。我有一个 docker 镜像,它声明了 2 个卷,如下所示:

VOLUME ["/db/mongo/data" , "/db/mongo/log"]

我正在使用 StatefulSet ,其中我有 2 个卷挂载,如 --

volumeMounts:
            - name: mongo-vol
              mountPath: << path1 >>
              subPath: data
            - name: mongo-vol
              mountPath: << path2 >>
              subPath: log

我的问题是 i) path1 和 path2 是否应该分别被称为“/db/mongo/data”和“/db/mongo/log”?

ii) 或者它可以是将卷安装在容器内的任何路径,并且“/db/mongo/data”和“/db/mongo/log”容器路径将自动映射到这些安装点?

我尝试阅读文档并尝试了这两个选项,但仍然存在一些混乱。在这里感谢一些帮助。

【问题讨论】:

    标签: docker kubernetes


    【解决方案1】:

    您的两个卷安装都引用了同一卷 mongo-vol。这告诉我这是一个包含data 和log 目录的卷。您应该使用/db/mongo/log 和/db/mongo/data 作为您的mountPaths,并将subPath 分别指定为log 和data。这将挂载mongo-vol 引用的卷,并将该卷中的data 和log 目录挂载到这些目录上。

    如果您有两个单独的卷,mongo-data 和 mongo-log,那么您将以相同的方式挂载它们,但不使用 subPath,因为您没有引用该卷下的子目录。

    【讨论】:

    • 感谢您的回复。所以这向我表明 mountPath 应该与发布的 docker 卷完全对应。试了一下,现在我更清楚了。
    猜你喜欢
    • 2021-10-26
    • 2018-08-25
    • 2021-10-30
    • 2020-08-07
    • 2019-08-24
    • 2019-10-09
    • 2021-08-02
    • 2014-12-08
    • 2017-07-21
    相关资源
    最近更新 更多