架构
目录
第 1 章:简介第 2 章:架构概览第 3 章:OperatorsRook-Ceph operator组件设计图职责资源生命周期ACP storage operator组件设计图职责资源生命周期第 4 章:安装概览operator 安装Ceph 集群创建概览CephCluster 创建内部模式外部模式第 5 章:升级概览第 1 章:简介
Alauda Build of Rook-Ceph 是 Alauda Container Platform (ACP) 的云原生存储层。它作为 Kubernetes 原生系统运行,并通过 operator、自定义资源和 CSI 驱动程序提供持久化存储服务。
从应用的角度来看,该平台提供三种主要存储类型:
- 文件存储:为需要多个 pod 并发读写访问的工作负载提供共享文件系统语义(例如 RWX 场景)。
- 块存储:为需要专用卷的延迟敏感型或数据库类工作负载提供底层块设备。
- 对象存储:为非结构化数据、备份构件和数据平台集成提供兼容 S3 的对象访问。
Alauda Build of Rook-Ceph 集成了以下核心开源项目:
- Ceph:提供块、文件和对象能力的分布式存储引擎。
- Rook:用于部署和管理 Ceph 集群的 Kubernetes operator 框架。
- Ceph CSI Operator:管理 Ceph CSI 驱动程序组件及其生命周期的 operator。
- Ceph CSI:Kubernetes 用于 Ceph 支持卷的动态置备、连接/挂载和生命周期操作的 CSI 实现。
第 2 章:架构概览
从较高层面来看,Alauda Build of Rook-Ceph 完全运行在 Alauda Container Platform 内部。
Alauda Build of Rook-Ceph 架构
Alauda Build of Rook-Ceph 使用故障域配置来确定数据副本如何分布在集群中。故障域表示一个物理边界,例如主机、机架或可用区,数据副本会分布在该边界内,以确保高可用性。Alauda Build of Rook-Ceph 会根据分配给存储节点的标签自动识别这些故障域。
第 3 章:Operators
Alauda Build of Rook-Ceph 由以下两个 Operator Lifecycle Manager (OLM) operator bundle 组成,其中部署的 operator 将管理任务和自定义资源编码,从而可以轻松自动化任务和资源特征:
- acp-storage-operator
- rook-ceph-operator
管理员定义集群的期望最终状态,operator 确保集群处于该状态或向该状态靠近,同时尽可能减少管理员干预。
Rook-Ceph operator
rook-ceph-operator 是 Alauda Build of Rook-Ceph 中用于 Ceph 的 operator。它支持 Ceph 存储系统作为 Kubernetes 管理的服务运行在 Alauda Container Platform 上。
rook-ceph-operator 容器会自动引导存储集群并监控存储守护进程,以维护集群运行状况。
组件
rook-ceph-operator 管理以下 Ceph 守护进程组件:
- Mons:Ceph monitor(
mons)维护集群元数据和仲裁。 - OSD:Object Storage Daemon(
OSDs)存储和复制数据。 - Mgr:Ceph manager(
mgr)提供指标和内部管理功能。 - RGW:RADOS Gateway(
RGW)通过兼容 S3 的 API 提供对象存储访问。 - MDS:Metadata Server(
MDS)为 CephFS 共享文件系统提供元数据服务。
设计图
设计图展示了 rook-ceph-operator 如何将 Ceph 与 ACP 集成。
应用可以通过挂载块设备和共享文件系统,或使用对象存储 API,来使用此存储层。
职责
rook-ceph-operator 负责引导和监控存储集群,具体职责如下:
- 自动配置存储组件。
- 启动、监控和管理 RADOS 集群的 Ceph monitor pod 和 Ceph OSD 守护进程。
- 初始化用于管理以下内容的 pod 和构件:
- pool 自定义资源
- 对象存储(S3)
- 文件系统
- 监控 Ceph monitor 和 OSD 守护进程,以保持存储可用且运行状况良好。
- 部署和管理 monitor 放置,并在集群规模发生变化时更新 monitor 配置。
- 监视通过 API 服务请求的期望状态变更,并应用这些变更。
- 初始化 Ceph-CSI 驱动程序。
- 自动配置 Ceph-CSI,将 Ceph 存储挂载到应用 pod。
rook-ceph-operator 镜像包含生命周期管理所需的工具。它不会修改数据路径,也不会公开所有底层 Ceph 配置;placement group 和 CRUSH map 等高级 Ceph 构造仍保持抽象,从而提供更简单的运维模型。
资源
operator 会为其在 rook-ceph 命名空间中创建的资源添加所有者引用。卸载期间,这些引用可确保同时删除关联资源,包括 ConfigMaps、Secrets、Services、Deployments 和 DaemonSets。
operator 会监视并协调以下自定义资源:
CephClusterCephObjectStoreCephFilesystemCephBlockPool
生命周期
operator 管理以下 Ceph 和 CSI pod 的生命周期:
- Rook operator:
- 一个 operator pod。
- RBD CSI Driver:
- 两个由一个 deployment 管理的 provisioner pod。
- 每个节点一个由 DaemonSet 管理的 plugin pod。
- CephFS CSI Driver:
- 两个由一个 deployment 管理的 provisioner pod。
- 每个节点一个由 DaemonSet 管理的 plugin pod。
- Monitors(
mons):- 三个 monitor pod,每个 pod 都有自己的 deployment。
- 在 stretch 集群中有五个 monitor pod:arbiter 区域一个,每个数据区域两个。
- Manager(
mgr):- 标准 deployment 中的两个 manager pod。
- Object Storage Daemons(
OSDs):- 初始至少创建三个 OSD。
- 随着集群容量扩展,会添加更多 OSD。
- Metadata Server(
MDS):- 两个 metadata server pod。
- RADOS Gateway(
RGW):- 至少两个 gateway pod。
ACP storage operator
acp-storage-operator 是 ACP 专用 operator,负责协调 CephCluster 资源,并管理围绕运维、监控和故障排除的内置 ACP 存储集成。
它仅适用于内部模式部署。
组件
acp-storage-operator 管理以下内置集成组件:
- 用于
CephCluster的 Ceph 协调控制器。 - 两个
MutatingWebhookConfiguration条目:- 一个用于
CephCluster - 一个用于
CephFilesystem
- 一个用于
设计图
acp-storage-operator 作为 ACP 中的控制平面 operator 运行,并通过 ACP 原生监控和运维资源扩展 Ceph 集群生命周期。
职责
acp-storage-operator 执行以下职责:
- 监视并协调
CephCluster资源。 - 通过变更 Webhook,在创建时修改
CephCluster和CephFilesystem对象。 - 在变更期间初始化 ACP 专用默认值,包括
resources、placement及相关运行时设置。 - 创建用于 ACP 所需 Ceph manager 功能的内置
.mgrpool。 - 创建并维护 ACP 内置
AlertRule资源。 - 创建并维护 ACP 内置
MonitorDashboard资源。 - 自动启用并维护
rook-ceph-toolspod。
资源
acp-storage-operator 为每个协调的 CephCluster 创建并管理以下资源:
- 内置 Ceph
.mgrpool。 - ACP 内置
AlertRule对象。 - ACP 内置
MonitorDashboard对象。 rook-ceph-toolspod 及其相关运行时资源。
生命周期
acp-storage-operator 在内部模式下遵循以下生命周期:
- 引导阶段:operator deployment 启动,并为
CephCluster和CephFilesystem注册控制器和变更准入 Webhook。 - 准入阶段:收到创建请求时,Webhook 会在对象持久化之前注入 ACP 默认值(例如
resources和placement)。 - 协调阶段:
CephCluster变为可用后,operator 会持续协调 ACP 内置资源,包括.mgrpool、AlertRule、MonitorDashboard和rook-ceph-toolspod。 - 清理阶段:删除
CephCluster时,operator 会移除其为该集群创建的所有 ACP 管理资源。
第 4 章:安装概览
本章介绍内部模式和外部模式下的安装流程。
operator 安装
- OLM 为 ACP 内置存储集成安装
acp-storage-operator。 - OLM 从其软件包安装 rook-ceph-operator,并创建 operator deployment。
- 该 deployment 包含协调
CephCluster和 Ceph 相关资源所需的控制组件。 acp-storage-operator为CephCluster和CephFilesystem对象注册变更准入 Webhook。- 启动后,operator 开始监视 CRD,并准备存储使用所需的 CSI 组件。
Ceph 集群创建概览
- 管理员创建
CephCluster自定义资源。 - operator 使用该声明编排 Ceph 相关资源和 CSI 服务。
- 在内部模式下,
acp-storage-operator还会围绕同一个CephCluster协调 ACP 内置存储资源。 - 具体的协调路径因部署模式而异:内部模式或外部模式。
CephCluster 创建
内部模式
在内部模式下,存储守护进程运行在创建 CephCluster 的 ACP 集群中。
- operator 在存储命名空间中接收
CephCluster。 acp-storage-operator变更准入 Webhook 为CephCluster和CephFilesystem资源初始化 ACP 默认值(例如resources和placement)。rook-ceph-operator初始化监控器仲裁,并创建管理器守护进程。- OSD 准备作业发现已配置的设备,然后创建 OSD deployment。
- 为 RBD 和 CephFS 部署 Ceph CSI provisioner 和节点插件 pod。
acp-storage-operator协调 ACP 内置资源,包括.mgrpool、内置AlertRule、内置MonitorDashboard以及rook-ceph-toolspod。StorageClass对象通过 PVC 工作流变为可用于动态配置。- 集群运行状况和就绪状态会通过
CephCluster状态持续报告。
外部模式
在外部模式下,Ceph 数据平面运行在外部 provider 集群中,而 ACP 承载使用方的控制集成。
- operator 在使用方 ACP 集群中安装并协调 CSI 组件。
- 导入外部 Ceph 连接数据(例如监控器端点、集群标识符和客户端密钥)。
- 以外部模式(
external: true)协调CephCluster,以表示远程 Ceph 后端。 - 使用方集群中不会创建本地监控器或 OSD 守护进程。
- RBD 和 CephFS CSI 驱动程序使用导入的连接信息,从外部 Ceph 集群配置和挂载卷。
- 根据使用方组件和外部连接检查的结果协调状态和运行状况。
第 5 章:升级概览
Alauda Build of Rook-Ceph 通过 Subscription、InstallPlan 和 ClusterServiceVersion(CSV)资源遵循由 OLM 管理的升级工作流。有关受支持的 operator 加数据平面操作步骤,请参阅升级。
当前 channel 中出现较新的 bundle 后,OLM 会创建 InstallPlan,执行过程取决于自动或手动批准策略。
在批准 InstallPlan 后,OLM 执行 CSV 协调:
- 安装新的 CSV。
- 将 operator Deployment 更新为新镜像并重新启动。
- 成功完成过渡检查后,替换旧 CSV。
在 4.4.1 及更高版本中,已安装的 CSV 为 Succeeded 后,平台会将唯一的 CSV relatedImages 条目(其 name 为 ceph)写入内部 CephCluster.spec.cephVersion.image。如果该镜像已经是当前运行的值,则不会滚动更新 Ceph 守护进程。外部模式集群不会接收本地 Ceph 镜像写入。在 4.4.0 中,平台不会写入该镜像;请按照升级中的说明使用 kubectl。
随后,operator 级别的协调会完成其余配置:
- operator 会验证并根据面向用户的 CR 重新应用期望状态。
- 检查 Ceph 和 CSI 资源,确保其配置与版本一致。
- 持续纠正偏差,直至集群状态报告运行状况良好且已收敛。
不要依赖对生成的 CSV 内容进行手动编辑来实现持久化自定义。在后续升级期间,OLM 协调可能会覆盖这些临时更改。