Rook v1.19 存储增强技术分析

发布概述

Rook v1.19 版本正式发布,这是又一个功能丰富的版本,旨在提升 Kubernetes 存储体验。Rook 作为 CNCF 托管项目,在社区中被广泛使用,GitHub 星标超过 1.33 万,Slack 成员和 X 关注者数量持续增长。

系统架构

Rook v1.19 在 Kubernetes 存储编排中的核心架构如下:

Rook v1.19 架构图

从架构图中可以看出,Rook v1.19 通过以下组件协同工作:

  1. Ceph CSI 驱动 v3.16:作为 Kubernetes 与底层存储的桥梁
  2. NVMe-oF Gateway:提供基于 NVMe/TCP 协议的高性能块存储访问
  3. 并发集群对齐:支持多个 Ceph 集群的并发管理

核心新功能

1. NVMe-oF Gateway(实验性)

NVMe over Fabrics(NVMe-oF)允许通过 NVMe/TCP 协议访问 RBD 卷。这是 Rook v1.19 最重要的新功能之一。

技术原理

NVMe-oF Gateway 架构如下:

  1. Ceph RBD 卷通过 NVMe-oF Gateway 暴露
  2. 集群内 Pod集群外客户端都能使用标准 NVMe-oF 发起器连接
  3. 数据传输基于NVMe/TCP 协议,实现网络上的高性能块存储访问

技术背景

  • Ceph 从 Tentacle 版本开始支持 NVMe-oF
  • 字节跳动基础架构团队在 2021 年 11 月向 Kubernetes CSI 社区捐赠了 NVMe-oF CSI 驱动(csi-driver-nvmf)
  • Rook v1.19 完成了初步集成,但目前仍处于实验模式

性能优势

根据 IBM 的对比分析,NVMe-oF 相比传统 RBD 具有:

  • 更低的存储栈开销
  • 接近本地 NVMe 的性能特征
  • 低延迟和高吞吐量

当前限制

  • 实验性质:尚未达到生产稳定阶段
  • 需要时间打磨:社区欢迎用户测试并反馈

2. Ceph CSI 3.16 集成

Ceph CSI v3.16 带来了 RBD、CephFS、NFS 驱动的多项改进。

配置模式

Rook v1.19 继续支持两种配置模式:

  1. Ceph CSI Operator 模式:Rook 自动配置 Ceph CSI Operator
  2. 直接配置模式:Rook 直接管理 CSI 驱动配置

新特性

  • 基于 NVMe-oF 协议的 CSI 驱动:支持卷的动态创建和挂载
  • 节点故障隔离改进:RBD 和 CephFS 卷在节点故障时的隔离
  • 块卷使用统计:提供块卷的使用情况统计
  • 可配置的块加密算法:支持不同的加密算法选择

3. 并发集群对齐(Concurrent Cluster Reconciles)

问题背景

在 v1.19 之前,如果一个 Kubernetes 集群里配置了多个 Ceph 集群,Rook 会串行对齐它们。如果某个集群出现健康问题,会阻塞后续集群的对齐操作。

解决方案

Rook v1.19 引入并发对齐功能:

  1. 启用方式:设置 ROOK_RECONCILE_CONCURRENT_CLUSTERS(或 Helm 中的 reconcileConcurrentClusters)为大于 1 的值
  2. 资源调整:如果给 Operator 配置了资源请求和限制,可能需要提升以支持并发
  3. 实验性质:目前标记为实验性质,因为并发测试较为困难

日志改进

并发对齐时,Operator 日志会混合显示多个集群的日志。Rook v1.19 已将日志加入命名空间和集群名,便于排查问题。

破坏性变更

CephFS 行为变化

CephFilesystem CRD 中的 activeStandby 属性行为改变:

  • v1.19 之前:设为 false 时,备用 MDS 守护进程保留但禁用备用缓存
  • v1.19:设为 false 时,备用 MDS 守护进程会被缩容并删除

Helm 配置调整

rook-ceph-cluster Chart 中 Ceph 镜像的定义方式调整:

  • 允许分开配置仓库地址和标签
  • 升级时若之前在 cephClusterSpec 里指定了 Ceph 镜像,需移除并改用新配置项

外部集群模式变更

外部模式下,如果指定了 Ceph 管理 keyring:

  • v1.19 之前:Rook 自动创建 CSI Ceph 客户端
  • v1.19:CSI 客户端 keyring 仅由外部 Python 脚本创建,避免重复

版本支持

Ceph 版本

版本支持状态说明
Reef v18已移除到达生命周期末期
Squid v19支持当前支持版本
Tentacle支持当前支持版本(含 NVMe-oF 支持)

Kubernetes 版本

  • 支持范围:v1.30 至 v1.35
  • CI 测试:针对这些版本进行测试确保兼容性
  • 旧版本:Rook 仍可运行,但没有测试保障

影响分析

对用户的影响

  1. 性能提升:NVMe-oF Gateway 提供了接近本地 NVMe 的网络块存储性能
  2. 可靠性增强:节点故障隔离改进提高了存储系统的稳定性
  3. 运维效率:并发集群对齐避免了单个集群问题影响其他集群的管理

对架构的影响

  1. 存储分层:NVMe-oF 引入了新的存储访问层,需要重新思考存储架构设计
  2. 多集群管理:并发对齐使得在单个 Kubernetes 集群中管理多个 Ceph 集群更加可行

升级建议

  1. Ceph Reef 用户:必须先升级到至少 Squid v19,再升级 Rook
  2. Helm 用户:检查并更新 Ceph 镜像配置
  3. CephFS 用户:注意 activeStandby 行为变化
  4. 生产环境:NVMe-oF 仍为实验性质,建议先在测试环境验证

未来展望

Rook 团队表示将继续致力于打造稳定可靠的 Kubernetes 存储操作器。社区反馈是推动项目发展的关键动力。

用户和开发者都可以通过以下方式参与:

  1. 分享使用经验:访问 Adopters 页面提交信息
  2. 测试新功能:特别是 NVMe-oF Gateway 和并发集群对齐
  3. 提供反馈:通过 GitHub Issues 或社区渠道反馈问题

参考资料

  1. Rook v1.19.0 Release Notes - GitHub
  2. NVMe-oF Block Storage - Rook Documentation - 官方文档
  3. Ceph NVMe-oF Gateway - Ceph 官方文档
  4. Ceph NVMe-oF Gateway Requirements - Ceph 官方文档
  5. Ceph NVMe over Fabrics Gateway - GitHub - Ceph 项目仓库
  6. Add NVMe-oF support for Rook · Issue #15551 - GitHub Issue
  7. Ceph Block Storage Showdown: RBD vs. NVMeoF - IBM Community
  8. 字节跳动基础架构团队向 K8S CSI 社区捐赠云原生存储方案 - CSDN
  9. Rook v1.18 Storage Enhancements - Rook Blog
  10. Rook GitHub Repository - GitHub
最后修改:2026 年 01 月 22 日
如果觉得我的文章对你有用,请随意赞赏