【Rook / CSI】对照替代路径:云 CSI、Longhorn 与裸 Ceph/cephadm
内容提要
本文对比Rook+Ceph-CSI、云托管块CSI、Longhorn和裸Ceph四条存储路径,指出它们赢在不同前提:云CSI适合公有云纯块需求,Longhorn适合中小规模块副本,裸Ceph适合独立生命周期,Rook则适合需RADOS语义且用K8s声明式管理的场景。强调选型应基于机制差异而非延迟榜单,避免在公有云云盘上叠Rook等反模式。
延伸解读
选型先问机制,再谈性能
文章强调,跨方案延迟比较需要固定负载、硬件代际、副本策略与客户端路径,单个数字对比是“口径欺骗”。四条路径赢在不同前提:云CSI适合公有云纯块需求,Longhorn适合中小规模块副本,裸Ceph适合独立生命周期,Rook适合需RADOS语义且用K8s声明式管理的场景。选型应基于机制差异,而非延迟榜单。
警惕公有云上叠Rook的反模式
在公有云虚机里用云盘再做Ceph OSD,再经Rook供给PVC,会叠加云块延迟与RADOS税,且需自担peering、满盘、恢复等运维负担。文章明确此为反模式,若已决定用云块,应直接走云CSI,而非用Rook“包一层心理安慰”。
Longhorn与Ceph:引擎差异大于品牌
Longhorn与Rook-Ceph都在K8s里用CSI暴露块设备,但副本与重建发生在不同引擎抽象上。Longhorn优化的是K8s原生中小规模块副本,不提供CephFS/RGW统一接口;Ceph则提供RADOS语义、CRUSH拓扑与多接口。社区营销常把两者归为同一品类,但机制上并非如此,ADR应写清选的是引擎而非品牌。
迁移成本在方言切换,不在改名
从云CSI迁到Rook或反向迁出,真正昂贵的是失败方言与值班手册的切换。迁入Rook前应具备六轴runbook、主版本升级演练、features门禁;迁出前应核对快照/克隆语义、应用是否依赖CephFS RWX或RBD特性。缺演练的迁移应视为“未关闭”,而非“已完成切换”。
Q&A
Rook、云CSI、Longhorn和裸Ceph这四种存储路径分别适合什么场景?
云CSI适合公有云上纯块存储需求;Longhorn适合中小规模、接受引擎级副本模型的K8s块存储;裸Ceph适合存储集群生命周期独立于K8s、团队精通cephadm的场景;Rook适合需要RADOS语义(如CephFS、RGW)且希望用K8s声明式管理存储的场景。
为什么在公有云上使用云盘再叠加Rook被认为是反模式?
因为在公有云虚机上用云盘做Ceph OSD再经Rook供给PVC,会叠加云块延迟和RADOS开销,且需要自担peering、满盘、恢复等运维负担,属于不必要的复杂度。如果已决定使用云块,应直接使用云CSI。
Longhorn和Rook+Ceph在数据放置和写确认机制上有何不同?
Rook+Ceph使用CRUSH映射到PG再到OSD,写确认由RADOS主OSD和副本/EC确认;Longhorn在节点上维护副本,副本放置与K8s节点强绑定,写确认由引擎层完成。
裸Ceph(cephadm)和Rook在控制面管理上有哪些主要区别?
裸Ceph使用cephadm或ceph orch管理mon/osd部署,升级通过ceph orch或发行版手册,PVC可通过外部Ceph-CSI或非K8s客户端;Rook通过CephCluster reconcile管理,升级遵循Rook文档和Ceph主版本纪律,PVC由Ceph-CSI经CSI Operator提供,密钥和endpoint通过K8s Secret分发。
在什么情况下应该选择裸Ceph而不是Rook?
当存储集群生命周期独立于某个K8s集群(如多K8s共享一个Ceph)、平台团队精通cephadm且认为Rook Operator增加抽象层、或需要Rook尚未覆盖的Ceph配置面时,应选择裸Ceph。
从云CSI迁移到Rook或反向迁移,真正的成本是什么?
真正的成本不是修改StorageClass名称,而是失败方言和值班手册的切换。迁入Rook前需具备六轴runbook、主版本升级演练和features门禁;迁出Rook到云CSI前需对照快照/克隆语义,并确认应用是否依赖CephFS RWX或RBD特定镜像特性。
为什么说用延迟榜单来比较这四种存储方案是口径欺骗?
因为跨方案延迟比较需要固定负载、硬件代际、副本策略和客户端路径,单个数字比较无法反映机制差异。四种方案赢在不同不变量,应基于机制差异而非延迟数字进行选型。