Loading... # Rook v1.19 存储增强技术分析 ## 发布概述 Rook v1.19 版本正式发布,这是又一个功能丰富的版本,旨在提升 Kubernetes 存储体验。Rook 作为 CNCF 托管项目,在社区中被广泛使用,GitHub 星标超过 1.33 万,Slack 成员和 X 关注者数量持续增长。 ## 系统架构 Rook v1.19 在 Kubernetes 存储编排中的核心架构如下:  从架构图中可以看出,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](https://github.com/rook/rook/blob/master/ADOPTERS.md) 页面提交信息 2. **测试新功能**:特别是 NVMe-oF Gateway 和并发集群对齐 3. **提供反馈**:通过 GitHub Issues 或社区渠道反馈问题 ## 参考资料 1. [Rook v1.19.0 Release Notes](https://github.com/rook/rook/releases/tag/v1.19.0) - GitHub 2. [NVMe-oF Block Storage - Rook Documentation](https://rook.io/docs/rook/v1.19/Storage-Configuration/Block-Storage-RBD/nvme-of/) - 官方文档 3. [Ceph NVMe-oF Gateway](https://docs.ceph.com/en/reef/rbd/nvmeof-overview/) - Ceph 官方文档 4. [Ceph NVMe-oF Gateway Requirements](https://docs.ceph.com/en/reef/rbd/nvmeof-requirements/) - Ceph 官方文档 5. [Ceph NVMe over Fabrics Gateway - GitHub](https://github.com/ceph/ceph-nvmeof) - Ceph 项目仓库 6. [Add NVMe-oF support for Rook · Issue #15551](https://github.com/rook/rook/issues/15551) - GitHub Issue 7. [Ceph Block Storage Showdown: RBD vs. NVMeoF](https://community.ibm.com/community/user/blogs/mike-burkhart/2025/08/18/ceph-block-storage-showdown-rbd-vs-nvmetcp) - IBM Community 8. [字节跳动基础架构团队向 K8S CSI 社区捐赠云原生存储方案](https://blog.csdn.net/zhagyong/article/details/121118088) - CSDN 9. [Rook v1.18 Storage Enhancements](https://blog.rook.io/rook-v1-18-storage-enhancements-7977a800e9bc) - Rook Blog 10. [Rook GitHub Repository](https://github.com/rook/rook) - GitHub 最后修改:2026 年 01 月 22 日 © 允许规范转载 赞 如果觉得我的文章对你有用,请随意赞赏