kubernetes 能否从主机提供一个带有 emptyDir 卷的 pod,该主机由不同于主机的特定文件系统支持?

Can kubernetes provide a pod with an emptyDir volume from the host backed by a specific filesystem different than the host's?

我知道这有点奇怪,但我正在构建一个对临时 file/folder 系统进行小的本地更改并需要将它们与记录存储同步的应用程序。我现在正在使用 NFS,但它很慢,不是超级可扩展的,而且很昂贵。相反,我喜欢利用 btrfszfs 快照来高效同步小型本地文件系统的快照,并将快照推送到云存储中。

我是 运行 Kubernetes(在 GKE 中)中的这个应用程序,它使用具有 ext4 格式化根分区的 GCP 虚拟机。这意味着当我将 emptyDir 卷装载到我的 pods 时,我相信该文件夹位于 ext4 文件系统上。

有没有一种简单的方法可以让临时卷挂载到支持这些花哨的快照操作的不同文件系统?

没有。 GKE 也不提供那种低级别的控制,但是这个答案的其余部分假定您已经设法创建了某种本地安装。最简单的答案是 hostPath 挂载,但是这需要您手动考虑同一主机上的多个相似 pods,以免它们发生冲突。一个新选项是临时 CSI 卷与基本上重新实现 emptyDir 的 CSI 插件相结合。 https://github.com/kubernetes-csi/csi-driver-host-path 完成了大部分工作,但 1) 此用例需要更多工作,并且 2) 明确地 不支持生产使用。如果其中任何一个都失败,您可以将整个 kubelet 数据目录移动到另一个挂载上,尽管这可能无法实现您正在寻找的目标。