【问题标题】:How to mount "/" in kubernetes如何在 Kubernetes 中挂载“/”
【发布时间】:2019-10-18 20:30:28
【问题描述】:

在 kubernetes 中保存数据不是持久的。所以我们应该使用音量。 例如我们可以挂载“/apt”来将数据保存在“apt”中。 现在我想挂载“/”,但我得到了这个错误。

错误:来自守护程序的错误响应:无效的卷规范: '/var/lib/kubelet/pods/26c39eeb-85d7-11e9-933c-7c8bca006fec/volumes/kubernetes.io~rbd/pvc-d66d9039-853d-11e9-8aa3-7c8bca006fec:/': 类型“绑定”的无效装载配置:无效规范: 目的地不能是'/'

问题是如何在 kubernetes 中挂载“/”?

【问题讨论】:

  • 目的地不能是'/'
  • 如何保存对容器的任何更改?!
  • 您希望您的整个容器文件系统以某种方式同步到主机?你的用例是什么?
  • 是的。不知何故,我有一些用户。我想保存他们的全部更改
  • 奇怪为什么你的用户在你的应用被使用的时候会被更新?

标签: kubernetes


【解决方案1】:

不完全确定您的环境,但我今天遇到了这个问题,因为我希望能够通过 SSH (WinSCP) 浏览容器的整个根文件系统到主机。我在 Photon OS VM 环境中使用 Docker。我得出的答案是:你不能做你想做的事,但你可能能够完成你想做的事。假设我创建了一个名为 mysql 的卷,并使用该卷作为根创建了一个新的(过于简单的)mysql 容器:

docker volume create --name mysql
docker run -d --name=mysqldb -v /var/lib/docker/volumes/mysql:/ mysql:5.7

Docker 会哭着说我不能挂载到 root(目标不能是 '/')。但是,由于我知道我们的卷所在的位置(/var/lib/docker/volumes/),所以我们可以像往常一样简单地创建我们的容器,并将一个任意命名的卷放置在该文件夹中。因此,如果您的目标是(和我的一样)能够通过 ssh 连接到主机并浏览容器根目录中的文件,那么您可以做到这一点,您只需要转到正确的任意命名的卷即可。就我而言,它是“/var/lib/docker/volumes/12dccb66f2eeaeefe8e1feabb86f3c6def87b091dabeccad2902851caa97f04c/_data”,它不如“/var/lib/docker/volumes/mysql”漂亮,但它完成了工作。

希望对某人有所帮助。

【讨论】:

    猜你喜欢
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2019-01-31
    • 2018-12-02
    • 2020-08-07
    • 1970-01-01
    • 2020-03-17
    相关资源
    最近更新 更多