第 5 章 将文件和对象存储添加到现有外部 OpenShift Container Storage 集群


当 OpenShift Container Storage 配置为外部模式时,可以通过多种方式为持久性卷声明和对象存储桶声明提供存储。

  • 块存储的持久卷声明直接从外部 Red Hat Ceph Storage 集群提供。
  • 文件存储的持久卷声明可以通过向外部 Red Hat Ceph Storage 添加元数据服务器(MDS)提供。
  • 对象存储的对象 bucket 声明可以通过使用 Multicloud 对象网关或将 Ceph 对象网关添加到外部 Red Hat Ceph Storage 集群来提供。

使用以下流程,将文件存储(使用元数据服务器)或对象存储(使用 Ceph 对象网关)添加到最初部署为仅提供块存储的外部 OpenShift Container Storage 集群。

先决条件

  • OpenShift Container Platform 集群安装有版本 4.6。
  • OpenShift Container Storage 节点使用 OpenShift Container Storage Operator 的版本 4.6 一起安装。
  • 如果您从之前的版本升级到 4.6 版本,请启用监控: 为 Object Service 仪表板启用监控
  • 您的外部 Red Hat Ceph Storage 集群被配置为以下一个或多个集群:

    • 一个 Ceph 对象网关(RGW)端点,可由 OpenShift Container Platform 集群访问以用于对象存储
    • 用于文件存储的元数据服务器(MDS)池
  • 确保您知道在外部 OpenShift Container Storage 集群部署期间用于 ceph-external-cluster-details-exporter.py 脚本的参数。

步骤

  1. 使用以下命令下载 OpenShift Container Storage 的 ceph-external-cluster-details-exporter.py python 脚本:

    oc get csv $(oc get csv -n openshift-storage | grep ocs-operator | awk '{print $1}') -n openshift-storage -o jsonpath='{.metadata.annotations.external\.features\.ocs\.openshift\.io/export-script}' | base64 --decode > ceph-external-cluster-details-exporter.py
  2. 通过在外部 Red Hat Ceph Storage 集群中的任何客户端节点上运行 ceph-external-cluster-details-exporter.py,更新外部 Red Hat Ceph Storage 存储集群的权限上限。您可能需要要求您的 Red Hat Ceph Storage 管理员来执行此操作。

    # python3 ceph-external-cluster-details-exporter.py --upgrade \
    --run-as-user=ocs-client-name \
    --rgw-pool-prefix rgw-pool-prefix
    --run-as-user
    在 OpenShift Container Storage 集群部署期间使用的客户端名称。如果未设置其他客户端名称,请使用默认的客户端名称 client.healthchecker
    --rgw-pool-prefix
    用于 Ceph 对象网关池的前缀。如果使用默认前缀,可以省略它。
  3. 从外部 Red Hat Ceph Storage 生成并保存配置详情。

    1. 通过在外部 Red Hat Ceph Storage 集群中的任何客户端节点上运行 ceph-external-cluster-details-exporter.py 生成配置详情。

      # python3 ceph-external-cluster-details-exporter.py --rbd-data-pool-name rbd-block-pool-name --monitoring-endpoint ceph-mgr-prometheus-exporter-endpoint --monitoring-endpoint-port ceph-mgr-prometheus-exporter-port --run-as-user ocs-client-name  --rgw-endpoint rgw-endpoint --rgw-pool-prefix rgw-pool-prefix
      --monitoring-endpoint
      可从 OpenShift Container Storage 集群访问的活跃 Ceph Manager 的 IP 地址。
      --monitoring-endpoint-port
      Ceph Manager Prometheus Exporter 端点的端口。
      --run-as-user
      在 OpenShift Container Storage 集群部署期间使用的客户端名称。如果未设置其他客户端名称,请使用默认的客户端名称 client.healthchecker。
      --rgw-endpoint
      提供此参数,以通过 Ceph 对象网关为 OpenShift Container Storage 置备对象存储(可选参数)。
      --rgw-pool-prefix
      用于 Ceph 对象网关池的前缀。如果使用默认前缀,可以省略它。

      用户权限已更新,如下所示:

      caps: [mgr] allow command config
      caps: [mon] allow r, allow command quorum_status, allow command version
      caps: [osd] allow rwx pool=default.rgw.meta, allow r pool=.rgw.root, allow rw pool=default.rgw.control, allow rx pool=default.rgw.log, allow x pool=default.rgw.buckets.index
      注意

      确保除 Ceph 对象网关详细信息(如果提供)之外的所有参数(包括可选参数)与在外部模式中部署 OpenShift Container Storage 期间所用的相同。

    2. 将脚本的输出保存到 external-cluster-config.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": "client.healthchecker", "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": "ceph-rbd"}}, {"name": "monitoring-endpoint", "kind": "CephCluster", "data": {"MonitoringEndpoint": "xxx.xxx.xxx.xxx", "MonitoringPort": "xxxx"}}, {"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"}}]
  4. 上传生成的 JSON 文件。

    1. 登录 OpenShift Web 控制台。
    2. Workloads Secrets
    3. project 设置为 openshift-storage
    4. rook-ceph-external-cluster-details
    5. Actions (⋮) Edit Secret
    6. Browse 并上传 external-cluster-config.json 文件。
    7. 点击 Save

验证步骤

  • Overview Home Persistent Storage,验证 OpenShift Container Storage 集群的健康状态。
  • 如果您为文件存储添加了元数据服务器:

    1. Workloads Pods,验证 csi-cephfsplugin-* pod 是否已创建新并处于 Running 状态。
    2. Storage Storage Classes 并验证是否已创建 ocs-external-storagecluster-cephfs 存储类。
  • 如果您为对象存储添加了 Ceph 对象网关:

    1. Storage Storage Classes 并验证是否已创建 ocs-external-storagecluster-ceph-rgw 存储类。
    2. 在 OpenShift Web 控制台左侧窗格中,点击 Home Overview,然后点击 Object Service 选项卡。在 Status 卡中,验证 Object Service 会显示一个绿色勾号图标。
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部