OpenShift Container Storage is now OpenShift Data Foundation starting with version 4.9.
4.3. 存储集群创建
OpenShift Data Foundation 操作器本身不提供存储功能,而且必须定义所需的存储配置。
安装 Operator 后,可使用 OpenShift Container Platform 控制台向导或 CLI 创建新的 StorageCluster,并使用 ocs-operator 协调这个 StorageCluster。OpenShift Data Foundation 在每次安装中支持单个 StorageCluster。ocs-operator 协调忽略了在第一个 CR 之后创建的 StorageCluster CR。
OpenShift Data Foundation 允许以下 StorageCluster 配置:
- 内部
-
在 Internal 模式下,所有组件都在 OpenShift Container Platform 集群中容器化,并使用在安装向导中根据管理员指定的
StorageClass创建的动态置备持久性卷(PV)。 - 内部附加
-
此模式与内部模式类似,但管理员需要定义直接附加到 Ceph 用于其后备存储的群集节点的本地存储设备。另外,管理员需要创建与本地存储 operator 协调的 CR 以提供
StorageClass。ocs-operator使用这个StorageClass作为 Ceph 的后备存储。 - 外部
- 在这种模式下,Ceph 组件不会在 OpenShift Container Platform 集群内运行,而是为应用程序可以为其创建 PV 的外部 OpenShift Container Storage 安装提供连接。其他组件根据需要在集群中运行。
- MCG 独立
- 此模式有助于在没有附带的 CephCluster 的情况下安装多云对象网关系统。
找到 StorageCluster CR 后,ocs-operator 会对其进行验证,并开始创建后续资源来定义存储组件。
4.3.1. 内部模式存储集群 复制链接链接已复制到粘贴板!
内部和外部附加存储集群的设置过程相同,如下所示:
|
| 创建集群应用用于创建 Ceph 卷的存储类。 |
|
| 创建集群应用用于创建 Ceph 卷快照的卷快照类。 |
| Ceph RGW 配置 | 创建各种 Ceph 对象 CR,以启用和提供对 Ceph RGW 对象存储端点的访问。 |
| Ceph RBD 配置 |
创建 |
| CephFS 配置 |
创建 |
| Rook-Ceph 配置 |
创建 |
|
|
创建 |
|
|
创建 |
| 作业模板 |
创建 |
| Quickstarts |
创建 |
4.3.1.1. 集群创建 复制链接链接已复制到粘贴板!
在 ocs-operator 创建 CephCluster CR 后,rook-operator 根据所需的配置创建 Ceph 集群。rook-operator 配置以下组件:
|
Ceph |
在集群中的不同节点上启动三个 Ceph |
|
Ceph | 此守护进程已启动,它会为集群收集指标并将其报告到 Prometheus。 |
| Ceph OSD |
这些 OSD 根据 |
| CSI 置备程序 |
为 RBD 和 |
|
CSI 卷插件和 |
RBD 和 |
配置 CephCluster CR 后,Rook 会协调剩余的 Ceph CR 以完成设置:
|
|
|
|
|
|
|
|
|
|
|
|
操作器监控 Ceph 健康状况,以确保存储平台健康。如果某个 mon 守护进程长时间停机(10 分钟),Rook 会在其位置启动一个新的 mon,以便能够完全恢复仲裁。
当 ocs-operator 更新 CephCluster CR 时,Rook 会立即响应请求的更改,以更新集群配置。
4.3.1.2. NooBaa 系统创建 复制链接链接已复制到粘贴板!
当创建 NooBaa 系统时,mcg-operator 会协调以下内容:
默认 BackingStore
根据部署 OpenShift Container Platform 和 OpenShift Data Foundation 的平台,会创建一个默认的后备存储资源,以便存储桶可以将其用于放置策略。不同的选项如下:
| Amazon Web Services(AWS)部署 |
|
| Microsoft Azure 部署 |
|
| Google Cloud Platform(GCP)部署 |
|
| On-prem 部署 |
如果 RGW 存在, |
| 以上所述部署都不适用 |
|
默认 BucketClass
创建带有放置策略到默认 BackingStore 的 BucketClass。
NooBaa pod
以下 NooBaa pod 已创建并启动:
| 数据库(DB) | 一个 Postgres DB 用来保存元数据、统计信息和事件等。然而,它不会保存存储的实际数据。 |
| Core | 这是处理配置、后台进程、元数据管理、统计信息等的 pod。 |
| Endpoints |
这些 pod 执行与 I/O 相关的实际工作,如重复数据删除和压缩、与不同服务通信以写入和读取数据等。端点与 |
Route
为使用 S3 的应用创建 NooBaa S3 接口的路由。
服务
为 NooBaa S3 接口创建一个服务,供使用 S3 的应用创建。
4.3.2. 外部模式存储集群 复制链接链接已复制到粘贴板!
对于外部存储集群,ocs-operator 的设置过程略有不同。ocs-operator 会查找是否存在 rook-ceph-external-cluster-details ConfigMap,该 ConfigMap 必须由其他人(管理员或控制台)创建。有关如何创建 ConfigMap 的详情,请参考为外部模式创建 OpenShift Data Foundation。然后,ocs-operator 会创建部分或全部以下资源,如 ConfigMap 中指定的:
| 外部 Ceph 配置 |
指定外部 |
| 外部 Ceph 凭据 Secret | 包含用于连接外部 Ceph 实例的凭据的 Secret。 |
| 外部 Ceph StorageClasses | 一个或多个 StorageClasses,用于为 RBD、CephFS 和/或 RGW 创建卷。 |
| 启用 CephFS CSI 驱动程序 |
如果指定了 |
| Ceph RGW 配置 | 如果指定了 RGW StorageClass,请创建各种 Ceph 对象 CR 来启用和提供对 Ceph RGW 对象存储端点的访问。 |
创建 ConfigMap 中指定的资源后,StorageCluster 创建过程会进行如下:
|
|
创建 |
|
|
创建应用程序用于创建 Ceph 卷快照的 |
|
|
创建 |
|
|
创建 |
4.3.2.1. 集群创建 复制链接链接已复制到粘贴板!
当以外部模式创建 CephCluster CR 时,Rook operator 会执行以下操作:
-
操作器验证连接可供远程 Ceph 集群使用。连接需要将
mon端点和 secret 导入到本地集群中。 -
CSI 驱动程序通过与 Ceph 的远程连接进行配置。在内部模式中配置时,RBD 和
CephFS调配器和卷插件的启动方式与 CSI 驱动程序相似,与 Ceph 的连接正好与 OpenShift 集群外部。 - 定期监控地址更改,并相应地更新 Ceph-CSI 配置。
4.3.2.2. NooBaa 系统创建 复制链接链接已复制到粘贴板!
当创建 NooBaa 系统时,mcg-operator 会协调以下内容:
默认 BackingStore
根据部署 OpenShift Container Platform 和 OpenShift Data Foundation 的平台,会创建一个默认的后备存储资源,以便存储桶可以将其用于放置策略。不同的选项如下:
| Amazon Web Services(AWS)部署 |
|
| Microsoft Azure 部署 |
|
| Google Cloud Platform(GCP)部署 |
|
| On-prem 部署 |
如果 RGW 存在, |
| 以上所述部署都不适用 |
|
默认 BucketClass
创建带有放置策略到默认 BackingStore 的 BucketClass。
NooBaa pod
以下 NooBaa pod 已创建并启动:
| 数据库(DB) | 一个 Postgres DB 用来保存元数据、统计信息和事件等。然而,它不会保存存储的实际数据。 |
| Core | 这是处理配置、后台进程、元数据管理、统计信息等的 pod。 |
| Endpoints |
这些 pod 执行与 I/O 相关的实际工作,如重复数据删除和压缩、与不同服务通信以写入和读取数据等。端点与 |
Route
为使用 S3 的应用创建 NooBaa S3 接口的路由。
服务
为 NooBaa S3 接口创建一个服务,供使用 S3 的应用创建。
4.3.3. MCG 独立存储集群 复制链接链接已复制到粘贴板!
在这种模式中,不会创建 CephCluster。相反,会使用默认值创建一个 NooBaa 系统 CR,以利用 OpenShift Container Platform 中的预先存在的 StorageClasses。
4.3.3.1. NooBaa 系统创建 复制链接链接已复制到粘贴板!
当创建 NooBaa 系统时,mcg-operator 会协调以下内容:
默认 BackingStore
根据部署 OpenShift Container Platform 和 OpenShift Data Foundation 的平台,会创建一个默认的后备存储资源,以便存储桶可以将其用于放置策略。不同的选项如下:
| Amazon Web Services(AWS)部署 |
|
| Microsoft Azure 部署 |
|
| Google Cloud Platform(GCP)部署 |
|
| On-prem 部署 |
如果 RGW 存在, |
| 以上所述部署都不适用 |
|
默认 BucketClass
创建带有放置策略到默认 BackingStore 的 BucketClass。
NooBaa pod
以下 NooBaa pod 已创建并启动:
| 数据库(DB) | 一个 Postgres DB 用来保存元数据、统计信息和事件等。然而,它不会保存存储的实际数据。 |
| Core | 这是处理配置、后台进程、元数据管理、统计信息等的 pod。 |
| Endpoints |
这些 pod 执行与 I/O 相关的实际工作,如重复数据删除和压缩、与不同服务通信以写入和读取数据等。端点与 |
Route
为使用 S3 的应用创建 NooBaa S3 接口的路由。
服务
为 NooBaa S3 接口创建一个服务,供使用 S3 的应用创建。
4.3.3.2. StorageSystem 创建 复制链接链接已复制到粘贴板!
作为 StorageCluster 创建的一部分,odf-operator 会自动创建一个对应的 StorageSystem CR,它将 StorageCluster 公开给 OpenShift Data Foundation。