既然树内 Kubernetes CephFS 持久卷插件已被弃用,我该如何使用 Rook 来获得相同的挂载行为?

既然树内 Kubernetes CephFS 持久卷插件已被弃用,我该如何使用 Rook 来获得相同的挂载行为?

从 Kubernetes v1.28 开始,CephFS 树内持久卷插件已弃用。官方建议现在改用第三方CSI 驱动程序。但是,我不确定如何使用例如 Rook 作为原始 Kubernetes 树内插件的替代品。

该插件能够使用 mon 地址、用户和密钥挂载指定的 ceph 文件系统。挂载也是到本地路径,不需要指定存储配额。

有人可以给出一个简单的例子,说明如何使用 Rook 和 Ceph CSI 驱动程序实现与原始 Kubernetes 树内 CephFS 插件相同或相似的功能吗?

答案1

在使用 rook 处理 Ceph CSI 插件后,我认为其用法与原始的树内 Kubernetes 插件不同。具体来说,CSI 插件在所选 Ceph 文件系统中管理存储配置的方式是在 FS 中创建/删除子目录。具体来说,创建的持久卷数据存储在 下/volumes/csi/。完整的子卷路径可以在持久卷的属性中找到,但本质上文件系统部分(/volumes至少子路径)由 CSI 驱动程序管理。

之前,您需要手动指定要挂载到容器中的子路径,而使用 CSI 驱动程序,您需要指定卷名,然后该卷名将引用文件系统中的特定子路径(由 CSI 驱动程序创建和管理)。

要在不同的容器之间共享卷/数据,您需要重复使用相同的持久卷名称(请参阅 PVC 规范的 volumeName 参数) 并确保持久卷具有persistentVolumeReclaimPolicyRetain如果您的默认策略是 ,Delete则需要编辑 PV 规范并将其更改为Retain

Rook 文档中对此过程进行了更详细的描述这里需要注意的一点是,似乎您无法volumeName在从 PVC 创建时手动设置 PV 的。我不确定您是否也可以手动创建 PV,而不是通过 PVC。

可能还有一种更直接的方法来实现这一点,但我并不熟悉。主要目的是跨多个容器和主机本身共享数据(使用mount -t ceph)。然后数据将从主机写入并由容器读取。

相关内容