0

我有一个配置为由自动挂载程序管理的目录(如此处所述。我需要在多个 pod 中使用此目录(以及安装在其中的所有目录)作为本地持久卷。

我能够在容器中触发自动挂载程序,但是当容器启动时这个目录不为空时,有一些用例。这使得子目录显示为空并且无法触发自动挂载程序(在容器内)

我做了一些调查,发现在使用本地 PV 时,mount -o bind源目录和由它管理的一些内部目录之间有一个命令kubelet是源代码中的行)。我真正需要的是rbind被使用(递归绑定 -是一个很好的解释)。

使用rbind还需要对卸载卷的部分进行一些更改(需要递归卸载)

我还不想修补 kubelet 并重新编译它。所以我的问题是:是否有一些官方方法可以向 Kubernetes 提供一些自定义安装器/卸载器?

4

1 回答 1

0

同时,我确实为这个用例找到了解决方案。

基于 Kubernetes文档,有一些东西叫做Out-Of-Tree Volume Plugins

Out-of-tree 卷插件包括容器存储接口 (CSI) 和 FlexVolume。它们使存储供应商能够创建自定义存储插件,而无需将它们添加到 Kubernetes 存储库中

即使鼓励使用 CSI,我也选择FlexVolume实现我的自定义驱动程序。是详细的文档。

这个驱动其实是一个py脚本,支持三个动作:init/mount/unmount(--rbind用来挂载automounter管理的那个目录,像这样卸载它)。它是使用 DaemonSet 部署的(此处的文档)

就是这样!

于 2020-08-19T12:45:40.703 回答