【问题标题】:Kubernetes - mount read only share as writableKubernetes - 将只读共享挂载为可写
【发布时间】:2019-01-09 05:33:52
【问题描述】:

我正在使用此配置来安装对 docker 映像只读的驱动器:

volumes:
  - name: drive-c
    hostPath:
      path: /media/sf_C_DRIVE
containers:
  ...
    volumeMounts:
    - name: drive-c
      mountPath: /c

当我尝试将 (mkdir) 写入 docker 映像内的此文件夹(这是虚拟盒只读安装文件夹)时,我得到:

mkdir: can't create directory 'somedir': Read-only file system

这没关系,因为这是只读文件系统 (C_DRIVE on /c type vboxsf (rw,nodev,relatime))

是否有可能以某种方式使这个文件夹在 docker 容器中可写?更改不需要传播到 hostPath。我读过一些关于 overlayfs 的内容,但我不确定如何在 Kubernetes yaml 中指定它。

【问题讨论】:

    标签: docker kubernetes readonly overlays writable


    【解决方案1】:

    您不能通过 Kubernetes 卷挂载来执行此操作,因为它们只是在卷上工作。您需要做的是在您的主机上创建一个可写的覆盖文件系统,然后将其映射到具有不同可写路径的 Kubernetes。

    您想创建类似/mnt/writable_sf_C_drive 的东西,方法是安装您的/media/sf_C_DRIVE 并在其顶部覆盖,然后您在Kubernetes 中的卷安装将安装/mnt/writable_sf_C_DRIVE.

    有一些说明here

    【讨论】:

    • 我是这么认为的。唯一的问题是我不能在两个 docker 镜像之间共享相同的覆盖挂载(因为任何人都会看到另一个镜像的变化)。另外,我读到 vboxsf 不支持覆盖。
    • 如何创建一个具有该卷挂载的 initContainer,然后简单地将所有内容复制到您的 pod 中,然后当真正的 pod 运行时,它将拥有数据的副本。
    • 我需要共享整个驱动器,正如您从我的问题中看到的那样(所以谈论 1TB 的数据......),这使得复制变得不可行。此外,我需要立即看到变化。但在其他一些用例中可能是解决方案......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2013-10-10
    • 2021-05-19
    • 2013-11-13
    • 2021-05-03
    • 1970-01-01
    • 2021-07-08
    相关资源
    最近更新 更多