【Rook / CSI】Ceph-CSI Operator:v1.20 必选路径与配置所有权

💡 原文中文,约10900字,阅读约需26分钟。
📝

内容提要

Rook v1.20 强制引入 Ceph-CSI Operator,CSI 设置从旧 ConfigMap 迁至 OperatorConfig 与 Driver CR。OperatorConfig 管理共享默认,Driver 管理各驱动覆盖,Driver 名即 provisioner 名。Helm 必须安装 ceph-csi-drivers chart,清单安装需含 csi-operator.yaml。升级前需导出 CR,避免定制被覆盖。所有权明确:管理员通过 CR 调谐 CSI,Rook Operator 只管 Ceph 生命周期。

🔎

延伸解读

升级前必做:导出 CR 备份

升级到 v1.20 前,务必先导出现有的 Driver 和 OperatorConfig 资源,否则定制配置可能在升级过程中被覆盖。官方建议使用 kubectl get drivers.csi.ceph.io 和 get operatorconfigs.csi.ceph.io 导出 YAML 备份。这一步是防止配置丢失的关键,尤其是对于已有定制环境的集群。

Helm 安装顺序:先 rook-ceph 再 ceph-csi-drivers

Helm 用户必须严格按照顺序安装:先安装 rook-ceph chart,再安装 ceph-csi-drivers chart。ceph-csi-drivers 提供 CSI 驱动所需的 ServiceAccount 和 RBAC,漏装会导致驱动无法启动。同时,必须使用 Rook 提供的推荐 values,否则驱动名前缀可能错误,导致挂载失败。

所有权分离:排障时先查 CR 再查 Ceph

v1.20 后,CSI 设置的权威对象是 OperatorConfig 和 Driver,不再是 Rook Operator 的 ConfigMap。排障时,应先检查 operatorconfig 和 driver 资源是否存在且正确,再确认 ServiceAccount 是否就绪,而不是直接重装 CephCluster。Ceph 健康不代表 CSI 正常,PVC 可能因 CSI 配置问题而 Pending。

Q&A

Rook v1.20 中,CSI 设置的管理方式发生了什么变化?

Rook v1.20 强制引入 Ceph-CSI Operator,CSI 设置从旧的 rook-ceph-operator-config ConfigMap 和 rook-ceph Helm chart 中移除,改为通过 OperatorConfig 和 Driver 自定义资源(CR)进行管理。新安装必须使用新模型,旧 ConfigMap 中的 CSI_* 键不再生效。

OperatorConfig 和 Driver 在 Ceph-CSI 配置中分别扮演什么角色?

OperatorConfig 用于管理所有驱动共享的默认设置,例如日志级别、controller 副本数、kubelet 路径等;Driver 用于管理每个驱动(如 RBD、CephFS)的特定配置,可以覆盖默认值或设置仅该驱动有意义的字段。Driver 的 metadata.name 必须与 StorageClass 的 provisioner 名称一致。

使用 Helm 安装 Rook v1.20 时,为什么必须安装 ceph-csi-drivers chart?

因为 v1.20 中 CSI 驱动的部署和配置由 Ceph-CSI Operator 管理,而 ceph-csi-drivers chart 提供了必要的 ServiceAccount、RBAC 和配置。如果不安装该 chart,CSI 驱动会因缺少 ServiceAccount 等资源而无法启动。

在 Rook v1.20 中,如何将旧的 CSI 配置迁移到新的 OperatorConfig 和 Driver?

升级前需要先导出现有的 Driver 和 OperatorConfig 资源进行备份。Rook 自 v1.18 起已开始自动将旧设置转换为 OperatorConfig/Driver,v1.20 则完全移除旧 ConfigMap 的支持。迁移时需参考官方映射表,将旧键值对应到新的 CR 字段,例如 CSI_PROVISIONER_REPLICAS 对应 controllerPlugin.replicas。

在 Rook v1.20 中,CSI 设置的权威对象是什么?

CSI 设置的权威对象是 OperatorConfig 和 Driver 自定义资源(或 Helm 中 ceph-csi-drivers chart 的 values)。Rook Operator 不再负责 CSI 设置,只管理 Ceph 集群生命周期。修改旧的 rook-ceph-operator-config 中的 CSI_* 键不会产生任何效果。

使用清单(manifest)安装 Rook v1.20 时,为什么必须包含 csi-operator.yaml?

csi-operator.yaml 负责部署 Ceph-CSI Operator 及其 CRD,是 CSI 功能正常运行的必要组件。如果遗漏该文件,CSI 驱动将无法被管理,导致存储挂载失败。官方 Quickstart 中明确要求创建 csi-operator.yaml。

Rook v1.20 升级后,如何验证 CSI 配置是否正确?

可以通过 kubectl 检查 OperatorConfig 和 Driver 资源是否存在,例如:kubectl -n rook-ceph get operatorconfig,driver。同时需要确认 ctrlplugin 和 nodeplugin 是否处于 Ready 状态,以及 CephCluster 是否健康。三者都正常才表示 CSI 配置正确。

🏷️

标签

➡️

继续阅读