Rook是什么、出现背景、特点与架构

来自AI助手的总结
Rook是Kubernetes上的Ceph存储编排系统,支持自动化管理多种持久化存储。
Rook是什么、出现背景、特点与架构

一、什么是Rook

Rook中文是”车”的意思,它本身不是云存储,Rook是一个自我管理的分布式存储编排系统,Rook在存储和Kubernetes之间搭建了一个桥梁,使存储系统的搭建或者维护变得特别简单,Rook将分布式存储系统转变为自我管理、自我扩展、自我修复的存储服务。它让一些存储的操作,比如部署、配置、扩容、升级、迁移、灾难恢复、监视和资源管理变得自动化,无须人工处理。同时Rook支持CSI,可以利用CSI做一些PVC的快照、扩容、克隆等操作。

Rook 构建在 Ceph 技术之上,利用 Ceph 的分布式存储和对象存储能力。Ceph 是一个开源的分布式存储系统,提供了可扩展性、高可用性和强一致性的存储解决方案。Rook 则通过将 Ceph 集成到 Kubernetes 中,提供了一种简单的方法来管理和部署 Ceph 存储集群。

Rook 的目标是简化 Kubernetes 上的存储管理,通过将存储服务作为 Kubernetes 的扩展来提供,为应用程序提供持久化存储功能。

Rook 支持多种存储类型,包括块存储、文件系统和对象存储。块存储可以用于需要直接访问磁盘的应用程序,文件系统可以提供共享存储访问,而对象存储则适用于大规模、可扩展的数据存储需求。

说明:目前已更新至1.11版本

二、Rook出现背景

在公司内部,除了生产环境并没有一个多余的Ceph集群,因为建立Ceph集群不仅需要大量的服务器资源,本身的复杂度也需要人力成本。但是在企业内部使用Kubernetes时,无论是在部署业务服务还是中间件服务,都能很明显地体会到Kubernetes的便利性和强大之处,所以我们在企业内部使用Kubernetes时,同时也会把中间件服务(比如MySQL、RabbitMQ、Zookeeper等)部署在Kubernetes集群中。相对于生产环境,也需要保留它们的数据,但是非生产环境可能并没有现成的存储平台供Kubernetes使用,新建一个平台供其使用也会浪费很多精力。

为了解决非生产环境的数据持久化问题,很多公司都采用了NFS作为后端,但是一旦使用的容器较多或者存储的数据量比较大,就容易造成性能问题,并且NFS服务器一旦出现问题,整个数据可能会全部丢失,所以在非生产环境也需要一个高可用、分布式并且免运维的存储平台,于是Rook就诞生了。

三、Rook特点有哪些

Rook具有以下特点:

  • 可扩展性:Rook 利用 Ceph 的分布式架构,可以方便地扩展存储容量和性能,以满足不断增长的存储需求
  • 高可用性:Rook 通过复制和故障转移机制提供高可用性存储,确保数据的安全性和持久性
  • 灵活性:Rook 支持多种存储类型和存储策略,可以根据应用程序的需求选择适当的存储方式
  • 集成性:Rook 与 Kubernetes 紧密集成,利用 Kubernetes 的强大编排和调度功能来管理存储资源
  • 易用性:Rook 提供了简化的资源定义和管理接口,使用户能够轻松地创建、扩展和管理存储集群
  • 活跃的社区:Rook 是一个活跃的开源项目,拥有庞大的社区支持和贡献者,不断改进和完善
  • 数据保护:Rook 提供了数据保护功能,包括快照和备份,可以帮助用户实现数据的可靠性和恢复性
  • 动态调整:Rook 允许用户在运行时动态调整存储资源,包括容量、性能和存储策略的调整,而无需停止或重启应用程序
  • 多租户支持:Rook 支持多租户环境,可以在同一个 Kubernetes 集群中为不同的用户或团队提供独立的存储空间和访问控制
  • 生态系统整合:Rook 与 Kubernetes 生态系统中的其他工具和项目无缝集成,例如 Prometheus、Grafana 等,可以实现存储集群的监控和可视化
  • 持续发展:Rook 是一个活跃的开源项目,持续发展和改进。它拥有广泛的社区支持和开发者社区,不断推出新的功能和增强

四、Rook架构

Rook 通过在 Kubernetes 集群中运行 Ceph,Kubernetes 应用程序可以挂载由 Rook 管理的块设备和文件系统,或者可以使用 S3/Swift API 进行对象存储。Rook 操作员可自动配置存储组件并监控集群,以确保存储保持可用且正常运行。

Rook Operator 是一个简单的容器,拥有引导和监控存储集群所需的一切。操作员将启动和监控Ceph 监控 pod、Ceph OSD 守护进程以提供 RADOS 存储,以及启动和管理其他 Ceph 守护进程。Operator 通过初始化 Pod 和运行服务所需的其他资源来管理池、对象存储 (S3/Swift) 和文件系统的 CRD。

操作员将监控存储守护进程以确保集群健康。Ceph mon 将在必要时启动或进行故障转移,并随着集群的增长或收缩而进行其他调整。操作员还将监视 Ceph 自定义资源 (CR) 中指定的所需状态更改并应用更改。

Rook 会自动配置 Ceph-CSI 驱动程序以将存储安装到您的 Pod。该rook/ceph映像包含管理集群所需的所有工具。Rook 不在 Ceph 数据路径中。许多 Ceph 概念(例如放置组和挤压图)都是隐藏的,因此您不必担心它们。相反,Rook 在物理资源、池、卷、文件系统和存储桶方面为管理员创建了简化的用户体验。需要时可以使用 Ceph 工具应用高级配置。

Rook架构图

针对上图中的组件进行说明:

  • Rook Operator(蓝色层):Operator自动化Ceph的配置
  • CSI 插件和配置程序(橙色层):Ceph-CSI 驱动程序提供卷的配置和安装
  • Ceph 守护进程(红色层):Ceph 守护进程运行核心存储架构

上面显示了三种支持的存储类型的示例应用程序:

  • 块存储用蓝色应用程序表示,该应用程序已ReadWriteOnce (RWO)安装卷。应用程序可以读取和写入 RWO 卷,而 Ceph 管理 IO
  • 共享文件系统由两个共享 ReadWriteMany (RWX) 卷的紫色应用程序表示。两个应用程序都可以同时主动读取或写入该卷。Ceph 将通过 MDS 守护进程确保多个写入者的数据得到安全保护
  • 对象存储由橙色应用程序表示,可以使用标准 S3 客户端读取和写入存储桶

说明:生产集群必须具有三个或更多节点才能实现弹性存储平台

上图中块存储类型(蓝色)创建具有 RWO 卷的应用程序的流程:

  • 应用程序创建 PVC 来请求存储
  • PVC 定义了用于配置存储的 Ceph RBD 存储类 (sc)
  • K8s 调用 Ceph-CSI RBD 配置程序来创建 Ceph RBD 映像
  • kubelet 调用 CSI RBD 卷插件来挂载应用程序中的卷
  • 该卷现在可供读取和写入

说明:ReadWriteOnce 卷一次可以安装在一个节点上

上图中共享文件系统类型(紫色)创建具有 RWX卷的应用程序的流程:

  • 应用程序创建 PVC 来请求存储
  • PVC 定义了用于配置存储的 CephFS 存储类 (sc)
  • K8s调用Ceph-CSI CephFS配置器创建CephFS子卷
  • kubelet 调用 CSI CephFS 卷插件来挂载应用程序中的卷
  • 该卷现在可供读取和写入

说明:ReadWriteMany 卷可以安装在多个节点上供应用程序使用

上图中共享文件系统类型(橙色)创建可访问 S3 存储桶的应用程序的流程:

  • 应用程序创建一个 ObjectBucketClaim (OBC) 来请求存储桶

  • Rook 操作员创建一个 Ceph RGW 存储桶(通过 lib-bucket-provisioner)

  • Rook 操作员使用访问存储桶的凭据创建一个密钥,并创建一个包含存储桶信息的配置映射

  • 应用程序从机密中检索凭据
  • 该应用程序现在可以使用 S3 客户端读取和写入存储桶
© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容