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。