2.2. 为外部 Ceph 存储系统创建 OpenShift Data Foundation 集群
在 VMware vSphere 或用户置备的裸机基础架构上部署的 OpenShift Container Platform 上安装 OpenShift Data Foundation operator 后,需要创建新的 OpenShift Data Foundation 集群。
先决条件
- 在部署 OpenShift Data Foundation 4.10 之前,请确保 OpenShift Container Platform 版本为 4.10 或以上。
- 必须安装 OpenShift Data Foundation 操作器。如需更多信息,请参阅使用 Operator Hub 安装 OpenShift Data Foundation Operator。
要以外部模式检查 Red Hat Ceph Storage (RHCS) 与 Red Hat OpenShift Data Foundation 的支持性和互操作性,请转至 lab Red Hat OpenShift Data Foundation 支持性和互操作性检查器。
-
选择 Service Type 为
ODF as Self-Managed Service
。 - 从下拉菜单中选择适当的 Version。
- 在 Versions 选项卡中,点 支持的 RHCS 兼容性选项卡。
-
选择 Service Type 为
如果您已将红帽 Ceph 存储集群从低于 4.1.1 的版本更新为最新版本,且不是全新部署的集群,您必须在红帽 Ceph 存储集群中手动设置 CephFS 池的应用类型,以外部模式启用 CephFS PVC 创建。
如需了解更多详细信息,请参阅在外部模式中对 CephFS PVC 创建进行故障排除。
- Red Hat Ceph Storage 必须安装并配置 Ceph 控制面板。如需更多信息,请参阅 Ceph 控制面板安装和访问。
- 建议外部 Red Hat Ceph Storage 集群启用 PG Autoscaler。如需更多信息,请参阅 Red Hat Ceph Storage 文档中的放置组自动扩展部分。
- 外部 Ceph 集群应当预配置有一个现有的 RBD 池,供使用。如果不存在,请在进行 OpenShift Data Foundation 部署前,联系您的 Red Hat Ceph Storage 管理员创建一个。红帽建议为每个 OpenShift Data Foundation 集群使用单独的池。
-
可选:如果除 default zonegroup 之外创建了 zonegroup,则需要添加主机名
rook-ceph-rgw-ocs-external-storagecluster-cephobjectstore.openshift-storage.svc
到 zonegroup,因为 OpenShift Data Foundation 会将 S3 请求发送到该主机名的 RADOS 对象网关(RGWs)。有关更多信息,请参阅红帽知识库解决方案 Ceph - 如何在 RGW zonegroup 中添加主机名?
流程
点 Operators
Installed Operators 查看所有已安装的 Operator。 确保所选 项目 为
openshift-storage
。- 单击 OpenShift Data Foundation,然后单击 Create StorageSystem。
在 Backing storage 页面中,选择以下选项:
- 为 Deployment 类型选项选择 Full Deployment 。
- 从可用选项中选择 Connect a external storage platform。
- 为 Storage platform 选择 Red Hat Ceph Storage。
- 点 Next。
在连接详情页面中,提供必要的信息:
- 在 Connect to external cluster 部分中,点 Download Script 链接,以下载用于提取 Ceph 集群详细信息的 python 脚本。
要提取 Red Hat Ceph Storage (RHCS) 集群详情,请联系 RHCS 管理员,以在带有
admin 密钥
的 Red Hat Ceph Storage 节点上运行下载的 python 脚本。在 RHCS 节点上运行以下命令查看可用参数列表:
# python3 ceph-external-cluster-details-exporter.py --help
重要如果在 Red Hat Enterprise Linux 7.x (RHEL 7.x) 集群中部署了 Red Hat Ceph Storage 4.x 集群,则使用
python
而不是python3
。注意您也可以从 MON 容器(容器化部署)或 MON 节点(rpm 部署)运行 脚本。
要从 RHCS 集群检索外部集群详情,请运行以下命令:
# python3 ceph-external-cluster-details-exporter.py \ --rbd-data-pool-name <rbd block pool name> [optional arguments]
例如:
# python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name ceph-rbd --monitoring-endpoint xxx.xxx.xxx.xxx --monitoring-endpoint-port xxxx --rgw-endpoint xxx.xxx.xxx.xxx:xxxx --run-as-user client.ocs
在本例中,
--rbd-data-pool-name
- 用于在 OpenShift Data Foundation 中提供块存储的必填参数。
--rgw-endpoint
-
可选参数,只有在要通过 Ceph Rados 网关为 OpenShift Data Foundation 置备对象存储时才需要提供该参数。使用以下格式提供端点:
<ip_address>:<port>
--monitoring-endpoint
- 是可选的。它接受可从 OpenShift Container Platform 集群访问的活跃和待机 mgrs 的以逗号分隔的 IP 地址列表。如果没有提供,则会自动填充该值。
--monitoring-endpoint-port
-
这是可选的。它是与
--monitoring-endpoint
指定的ceph-mgr
Prometheus exporter 关联的端口。如果没有提供,则会自动填充该值。 --run-as-user
这是一个可选参数,用于为 Ceph 用户提供由脚本创建的名称。如果没有指定此参数,则会创建一个默认的用户名
client.healthchecker
。新用户的权限被设置为:- caps: [mgr] allow command config
- caps: [mon] allow r, allow command quorum_status, allow command version
caps: [osd] allow rwx pool=
RGW_POOL_PREFIX.rgw.meta
, allow r pool=.rgw.root
, allow rw pool=RGW_POOL_PREFIX.rgw.control
, allow rx pool=RGW_POOL_PREFIX.rgw.log
, allow x pool=RGW_POOL_PREFIX.rgw.buckets.index
使用 python 脚本生成的 JSON 输出示例:
[{"name": "rook-ceph-mon-endpoints", "kind": "ConfigMap", "data": {"data": "xxx.xxx.xxx.xxx:xxxx", "maxMonId": "0", "mapping": "{}"}}, {"name": "rook-ceph-mon", "kind": "Secret", "data": {"admin-secret": "admin-secret", "fsid": "<fs-id>", "mon-secret": "mon-secret"}}, {"name": "rook-ceph-operator-creds", "kind": "Secret", "data": {"userID": "<user-id>", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-node", "kind": "Secret", "data": {"userID": "csi-rbd-node", "userKey": "<user-key>"}}, {"name": "ceph-rbd", "kind": "StorageClass", "data": {"pool": "<pool>"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"name": "rook-ceph-dashboard-link", "kind": "Secret", "data": {"userID": "ceph-dashboard-link", "userKey": "<user-key>"}}, {"name": "rook-csi-rbd-provisioner", "kind": "Secret", "data": {"userID": "csi-rbd-provisioner", "userKey": "<user-key>"}}, {"name": "rook-csi-cephfs-provisioner", "kind": "Secret", "data": {"adminID": "csi-cephfs-provisioner", "adminKey": "<admin-key>"}}, {"name": "rook-csi-cephfs-node", "kind": "Secret", "data": {"adminID": "csi-cephfs-node", "adminKey": "<admin-key>"}}, {"name": "cephfs", "kind": "StorageClass", "data": {"fsName": "cephfs", "pool": "cephfs_data"}}, {"name": "ceph-rgw", "kind": "StorageClass", "data": {"endpoint": "xxx.xxx.xxx.xxx:xxxx", "poolPrefix": "default"}}, {"name": "rgw-admin-ops-user", "kind": "Secret", "data": {"accessKey": "<access-key>", "secretKey": "<secret-key>"}}]
将 JSON 输出保存到带有
.json
扩展名的文件注意要使 OpenShift Data Foundation 无缝工作,请确保使用 JSON 文件上传的参数(RGW 端点、CephFS 详细信息和 RBD 池等)在创建存储集群后在 RHCS 外部集群上保持不变。
在多租户部署中的 RHCS 集群已连接到带有较低版本的 OpenShift Data Foundation 部署时,运行命令。
``` # python3 ceph-external-cluster-details-exporter.py --upgrade ```
单击 Browse 以选择并上传 JSON 文件。
JSON 文件的内容填充并在文本框中显示。
点 Next
只有上传
.json
文件后,Next 按钮才会启用。
在 Review and create 页面中,检查所有详情是否正确:
- 若要修改任何配置设置,请单击 Back 以返回到上一配置页面。
- 单击 Create StorageSystem。
验证步骤
验证已安装存储集群的最终状态:
-
在 OpenShift Web 控制台中,导航到 Installed Operators
OpenShift Data Foundation Storage System ocs-external-storagecluster-storagesystem Resources。 -
验证
StorageCluster
的Status
是否为Ready
且具有绿色勾号。 - 要验证 OpenShift Data Foundation、Pod 和 StorageClass 是否已成功安装,请参阅验证外部 Ceph 存储系统的 OpenShift Data Foundation 安装模式。