【Rook / CSI】CephCluster 生命周期:从 CR 到 mon/mgr/osd

💡 原文中文,约8100字,阅读约需20分钟。
📝

内容提要

本文介绍Rook Operator管理Ceph集群的生命周期:从CephCluster CR创建mon形成quorum,到mgr、OSD设备发现与部署,最后通过健康闸门验证HEALTH_OK。强调设备前置条件、dataDirHostPath清理、HEALTH_ERR时拒绝升级等关键运维纪律,并对比自动发现与显式设备清单的取舍,指出生产应偏向显式配置。

🔎

延伸解读

排障顺序:从 Operator 到 Ceph 健康

文章强调,当 CephCluster 创建后未出现预期 Pod 时,应按照 Operator → CephCluster reconcile 事件 → mon/mgr/osd Pod → toolbox 健康的顺序排查,而不是从应用命名空间的 PVC 倒推。若 rook-ceph-operator 镜像拉取失败、RBAC 不足或崩溃循环,后续的 mon 根本不会被创建。因此,先确认 Operator 就绪,再检查 Ceph 组件,避免误诊。

设备发现的取舍:自动 vs 显式

文章对比了自动发现(useAllDevices)与显式设备清单的利弊。自动发现虽省事,但存在误格式化风险,且 LVM LV 不会被自动发现;显式配置虽增加 YAML 复杂度,但变更可评审、事故面小。生产环境应偏向显式或严格过滤,自动发现仅适合可丢弃的实验室环境。

dataDirHostPath 的运维纪律

dataDirHostPath 是宿主机上存放 Ceph 配置与数据的路径,多集群必须互异,且禁止使用 /etc/ceph、/rook 等路径。测试后必须清理该路径,否则残留的旧密钥会导致新 mon 无法启动。即使 CSI 正常,mon 因残留目录起不来,整个控制面仍会异常。

健康闸门与升级决策

Operator 在升级 Ceph 镜像时会检查集群健康状态,若为 HEALTH_ERR 则默认拒绝升级。虽然可通过 skipUpgradeChecks 或 continueUpgradeAfterChecksEvenIfNotHealthy 强制继续,但文章明确反对将升级当作修复手段,强调应先修复数据面或配置错误。破窗工具应谨慎使用,并记录原因与回滚方案。

Q&A

Rook 创建 CephCluster 后,mon、mgr、OSD 的部署顺序是怎样的?

Rook Operator 接受 CephCluster CR 后,先部署 mon 并等待形成 quorum,然后部署 mgr(通常 2 个,一主一备),接着进行设备发现和 osd-prepare,最后启动 OSD Pod。之后通过 toolbox 验证集群 HEALTH_OK,才能供 CSI 使用。

Rook 中 mon 的数量如何配置?生产环境推荐几个?

mon 的数量由 spec.mon.count 控制,允许 1-9。文档推荐大多数场景使用 3 个,并强调奇偶与 quorum 数学:多数 mon 必须存活。生产环境不建议将多个 mon 放在同一节点,以免削弱故障域。

Rook 中 dataDirHostPath 的作用是什么?为什么测试后必须清理?

dataDirHostPath 指定宿主机上存放 Ceph 配置和数据的路径,Pod 删除后数据仍在。如果测试后不清理,残留的旧集群密钥会导致新 mon 无法启动。因此文档警告:测完删集群必须清路径。

Rook 中 useAllDevices: true 有什么风险?生产环境应如何选择设备?

useAllDevices: true 会自动消费所有发现的设备,存在误格式化风险,且不会捡起 LVM LV。生产环境应偏向显式设备清单或严格过滤,避免误吞系统盘或数据盘,便于变更审计。

Rook 升级 Ceph 时,如果集群处于 HEALTH_ERR 状态会怎样?

当请求更新 cephVersion.image 时,Operator 会检查 Ceph 状态;若处于 HEALTH_ERR,默认拒绝继续升级。可以通过 skipUpgradeChecks 或 continueUpgradeAfterChecksEvenIfNotHealthy 强制继续,但被标记为潜在不安全。建议先修复数据面或配置错误,再改镜像。

Rook 中 OSD 的存储模式有哪些?各有什么优缺点?

主要有两种:Host raw devices(宿主机裸盘)和 OSD on PVC(基于 PVC)。Host 模式路径短、性能直接,但节点生命周期与盘绑定,云上裸盘少;PVC 模式适配动态云盘,节点更不可变,但多一层块存储,可能产生“云盘上再做 Ceph”的双层税。

Rook 中如何验证 Ceph 集群健康?

通过 toolbox(管理客户端 Pod)运行 ceph status 或 ceph -s 命令。官方验证清单包括:全部 mon 在 quorum、至少一个 mgr active、至少三个 OSD up 且 in(示例规模)、健康为 HEALTH_OK。

Rook 支持哪些集群模式?External 模式有什么特点?

Rook 支持四种模式:Host Storage Cluster、PVC Storage Cluster、Stretched Storage Cluster、External Ceph Cluster。External 模式接入已有 Ceph,Rook 不管理其 OSD 生命周期,因此 Rook 侧绿灯不代表外部 RADOS 绿灯。

🏷️

标签

➡️

继续阅读