3.2. OpenShift Container Storage operator
ocs-operator
可以被理解为 OpenShift Data Foundation 的"meta"操作器,即操作器旨在影响其他操作器,并充当其他操作器提供的功能的配置网关。它不直接管理其他操作器。
ocs-operator
有以下主要功能:
- 创建自定义资源(CR),以触发其他操作器进行协调。
- 将 Ceph 和多云对象网关配置抽象,并将其限制为由红帽验证和支持的已知最佳实践。
- 根据支持策略创建并协调部署容器化 Ceph 和 NooBaa 所需的资源。
3.2.1. 组件
ocs-operator
没有任何依赖组件。但是,Operator 依赖于是否存在来自其他 Operator 的所有自定义资源定义(CRD),这些定义在 ClusterServiceVersion
(CSV)中定义。
3.2.2. 设计图
本图演示了 OpenShift Container Storage 如何与 OpenShift Container Platform 集成。
图 3.2. OpenShift Container Storage Operator

3.2.3. 职责
这两个 ocs-operator
CRD 是:
-
OCSInitialization
-
StorageCluster
OCSInitialization
是一个单例 CRD,用于封装应用到 operator 级别的操作。操作器负责确保一个实例始终存在。CR 会触发以下内容:
执行 OpenShift Container Storage 所需的初始化任务。如果需要,可以通过删除
OCSInitialization
CRD 来触发这些任务来再次运行。- 确保存在 OpenShift Container Storage 所需的安全性上下文约束(SCC)。
- 管理 Ceph toolbox Pod 的部署,用于执行高级故障排除和恢复操作。
StorageCluster
CRD 代表提供 OpenShift Container Storage 完整功能的系统。它触发操作器,以确保 Rook-Ceph
和 NooBaa
CRD 的生成与协调。ocs-operator
算法根据 StorageCluster
spec 中的配置生成 CephCluster
和 NooBaa
CRD。Operator 还会创建额外的 CR,如 CephBlockPools
和Routes
等。启用 OpenShift Container Storage 的不同功能需要这些资源。目前,每个 OpenShift Container Platform 集群只支持一个 StorageCluster CR。
3.2.4. Resources
ocs-operator
会根据定义的 CRD 的 spec 创建以下 CR。可以覆盖其中部分资源的配置,允许更改生成的 spec 或不能完全创建这些资源。
- 常规资源
- 事件
- 在需要时创建各种事件以响应协调。
- 持久性卷(PV)
- PV 不会被 Operator 直接创建。但是,Operator 会跟踪 Ceph CSI 驱动程序创建的所有 PV,并确保 PV 具有支持功能的适当注解。
- Quickstarts
- 为 OpenShift Container Platform 控制台部署各种 Quickstart CR。
- Rook-Ceph 资源
CephBlockPool
-
定义默认的 Ceph 块池。Ceph 对象存储的
CephFilesysPrometheusRulesoute
。 StorageClass
-
定义默认存储类。例如,Ceph
BlockPool
和CephFilesystem
。 VolumeSnapshotClass
- 为对应存储类定义默认卷快照类。
- 多云对象网关资源
NooBaa
- 定义默认的 Multicloud 对象网关系统。
- 监控资源
- 指标导出器服务
- 指标导出器服务监控器
- PrometheusRules
3.2.5. 限制
ocs-operator
都部署或协调 OpenShift Data Foundation 的其他 Pod。ocs-operator
CSV 定义顶层组件,如 operator Deployments,Operator Lifecycle Manager(OLM)协调指定的组件。
3.2.6. 高可用性
高可用性并不是 ocs-operator
Pod 的主要要求,与其他多数操作器类似。总体而言,并没有操作需要或受益于流程分布。在当前 Pod 不可用或被删除时,OpenShift Container Platform 会快速启动一个替换的 Pod。
3.2.7. 相关配置文件
ocs-operator
配置完全由 CSV 指定,在没有 CSV 自定义构建的情况下不可修改。
3.2.8. 相关日志文件
要了解 OpenShift Container Storage 并排除问题,您可以参阅以下内容:
- Operator Pod 日志
- Storagecluster 状态和事件
- OCSInitialization 状态
Operator Pod 日志
每个操作器都提供标准的 Pod 日志,其中包括有关协调的信息以及遇到的错误的信息。这些日志通常具有有关成功协调的信息,可以过滤掉并忽略它们。
Storagecluster
状态和事件
StorageCluster
CR 将协调详情存储在 CR 的状态中,并关联事件。status 包含预期容器镜像的一个部分。它显示了应当存在于其他操作器的容器集中的容器镜像,以及它当前检测到的镜像。这有助于确定 OpenShift Container Storage 升级是否完成。
OCSInitialization
状态
此状态显示初始化任务是否已成功完成。
3.2.9. 生命周期
只要仍然安装了 OpenShift Container Storage 捆绑包,就需要 ocs-operator
。这是作为 OLM 对 OpenShift Container Storage CSV 协调的一部分进行管理。至少一个 pod 实例应该处于 Ready
状态。
CRD 等 operator 操作对象不应影响 Operator 的生命周期。OCSInitialization
CR 应始终存在。如果不存在,Operator 会创建一个。创建和删除 StorageClusters 是在 Operator 控制之外的操作,必须由管理员发起,或者使用适当的 API 调用自动执行。