【Rook / CSI】对象与 NFS:RGW 暴露边界与实验性 NFS CSI

💡 原文中文,约7400字,阅读约需18分钟。
📝

内容提要

本文探讨Rook中对象存储与NFS的边界:CephObjectStore管理RGW网关生命周期,不涉及PVC语义;NFS CSI为实验特性,不支持升级,依赖CephFS而非RGW。强调区分协议,避免混淆排障,生产路径应选RBD/CephFS CSI,对象走RGW或外部S3。

🔎

延伸解读

协议边界:对象与文件不是同一条管道

Rook 中对象存储(CephObjectStore)编排的是 RGW 网关的生命周期,而非 PVC 语义;NFS CSI 的后端是 CephFS 与 NFS Ganesha,不能使用 RGW。应用接入路径不同:块走 RBD CSI、文件走 CephFS CSI、对象走 S3/Swift 客户端、NFS 走实验性 CSI。排障时需先区分协议面,避免将 RGW 故障误判为块存储问题。

NFS CSI 实验特性:升级无承诺,生产需谨慎

Rook v1.20 文档明确 NFS CSI 为实验特性,不支持升级到未来版本,且默认关闭。启用前需已有 CephFilesystem 和 CephNFS,并建议使用独立文件系统隔离实验负载。生产环境应优先选择成熟的 CephFS CSI 或 RBD CSI,NFS CSI 仅适合实验室或明确知情的预发场景。

对象存储与块/文件共置的资源与运维考量

同一 OSD 上共置 RGW、RBD、CephFS 可能引发资源争用,如 RGW LIST 风暴影响 RBD 克隆。建议为对象池与块池使用不同 pool,错开变更窗口,并单独采集 RGW 监控指标(延迟、5xx、索引池慢请求),避免将对象问题误判为整个集群变慢。

选型检查:先答五问再画架构图

架构设计前需明确:应用主键协议是块、POSIX 还是 S3?若为 S3,是否接受维护 CephObjectStore 的税?若为 POSIX,CephFS CSI 是否足够?若必须 NFS,能否接受实验性与无升级承诺?是否误将 RGW 当作 NFS CSI 后端?答不全则先阅读相关文档,避免盲目创建 CR。

Q&A

Rook 中 CephObjectStore 的作用是什么?它与 PVC 路径有何不同?

CephObjectStore 用于管理 RGW 网关的生命周期,包括部署 RGW 实例、对接对象池/索引池,并对外暴露 Service/Endpoint。它不涉及 PVC 语义,应用通过 S3/Swift 客户端或 Endpoint 访问,而不是通过 CSI 创建卷。PVC 路径有 Bound/Mounted 状态机、kubelet 挂载等,而对象存储关注 HTTP 服务可用性和桶策略。

Rook 中的 NFS CSI 驱动支持升级吗?它的后端是什么?

Rook v1.20 中的 NFS CSI 驱动是实验性特性,官方明确表示不支持升级到未来版本。它的后端是 CephFS 和 NFS Ganesha(CephNFS),不能使用 RGW 作为后端。

在 Rook 中启用 NFS CSI 驱动需要满足哪些前提条件?

启用 NFS CSI 驱动前,必须已有 CephFilesystem 和 CephNFS(NFS Ganesha 服务端)。此外,NFS 驱动默认关闭,需要通过 ceph-csi-operator 或 Helm(drivers.nfs.enabled: true)启用。

Rook 中对象存储和 NFS 的接入路径分别是什么?

对象存储通过 CephObjectStore 提供 S3/Swift 接口,应用使用 S3 SDK 或网关访问;NFS 通过 CephNFS 和实验性的 NFS CSI 驱动提供,应用通过 PVC 或外部 NFS 客户端挂载。NFS CSI 的后端是 CephFS,而不是 RGW。

Rook 中对象存储和块存储的排障有何不同?

对象存储问题通常表现为 S3 不可用,可能涉及 RGW 服务、桶策略或网络;块存储问题表现为 PVC 挂载失败,涉及 CSI 插件、RBD 镜像等。两者故障域独立,RGW 故障不会影响 RBD PVC,反之亦然。排障时应先区分协议面,避免混淆。

Rook 中 NFS CSI 驱动与 CephFS CSI 驱动有何区别?

NFS CSI 驱动是实验性的,不支持升级,后端是 CephFS 和 NFS Ganesha;CephFS CSI 驱动是成熟路径,支持 RWX,直接使用 CephFS。NFS CSI 提供 NFS 协议导出,而 CephFS CSI 提供 POSIX 文件系统挂载。生产环境推荐使用 CephFS CSI。

🏷️

标签

➡️

继续阅读