OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
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 所需的初始化任务。如果需要,可以通过删除
OCSInitializationCRD 来触发这些任务来再次运行。- 确保存在 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 调用自动执行。