Menu Close

管理并分配存储资源

Red Hat OpenShift Container Storage 4.7

集群和存储管理员的管理任务

摘要

本文档介绍如何为 Red Hat OpenShift Container Storage 中的核心服务和托管应用程序分配存储。

使开源包含更多

红帽承诺替换我们的代码、文档和网页属性中存在问题的语言。我们从这四个术语开始: master、slave、blacklist 和 whitelist。这些更改将在即将发行的几个发行本中逐渐实施。如需了解更多详细信息,请参阅 CTO Chris Wright 信息

对红帽文档提供反馈

我们感谢您对文档提供反馈信息。请告诉我们我们如何让它更好。提供反馈:

  • 关于特定内容的简单评论:

    1. 请确定您使用 Multi-page HTML 格式查看文档。另外,确定 Feedback 按钮出现在文档页的右上方。
    2. 用鼠标指针高亮显示您想评论的文本部分。
    3. 点在高亮文本上弹出的 Add Feedback
    4. 按照显示的步骤操作。
  • 要提交更复杂的反馈,请创建一个 Bugzilla ticket:

    1. 进入 Bugzilla 网站。
    2. 在 Component 中选择 Documentation
    3. Description 中输入您要提供的信息。包括文档相关部分的链接。
    4. Submit Bug

第 1 章 概述

阅读本文档,了解如何在 Red Hat OpenShift Container Storage 中创建、配置和分配存储到核心服务或托管应用程序。

第 2 章 存储类和存储池

OpenShift Container Storage Operator 根据使用的平台安装默认存储类。这个默认存储类由 Operator 所有和控制,且无法删除或修改。但是,您可以创建客户存储类来使用其他存储资源或为应用提供不同的行为。

在 OpenShift Container Platform 中,您可以创建多个存储池,它们映射到提供以下功能的存储类:

  • 使具有自身高可用性的应用能够使用具有两个副本的持久卷,从而可能提高应用性能。
  • 使用启用了压缩的存储类为持久性卷声明节省空间。
注意

外部模式 OpenShift Container Storage 集群不支持自定义存储类。

注意

使用单个设备集的最小集群,只能创建两个新的存储类。每个存储集群扩展都允许两个新的附加存储类。

2.1. 创建存储类和池

您可以使用现有池创建存储类,也可以在创建存储类时为存储类创建新池。

先决条件

确保 OpenShift Container Storage 集群处于 Ready 状态。

流程

  1. 登录 OpenShift Web 控制台。
  2. StorageStorage Classes
  3. Create Storage Class
  4. 输入存储类 Name 和 Description
  5. 为 Reclaim Policy 选择 DeleteRetain。默认情况下,选择 Delete
  6. 选择 RBD Provisioner,这是用于调配持久卷的插件。
  7. 您可以创建新池或使用现有的池。

    创建新池
    1. 输入池的名称。
    2. 选择双向复制 或三向复制作为数据保护策略
    3. 如果需要压缩数据,请选择启用压缩

      启用压缩可能会影响应用程序的性能,在已压缩或加密的数据时可能会证明无效。

    4. 单击 Create 以创建存储池。
    5. 创建池后,单击 Finish
    6. Create 创建存储类。
    使用现有的池
    1. 从列表中选择池。
    2. Create 使用所选池创建存储类

2.2. 为持久性卷加密创建存储类

使用外部密钥管理系统(KMS)加密通过存储类加密置备的持久性卷是一项技术预览功能。持久卷加密仅可用于 RBD PV。

重要

存储类加密是一项技术预览功能,仅适用于 RBD PV。技术预览功能不被红帽产品服务等级协议 (SLA) 支持,且可能在功能方面有缺陷。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

如需更多信息,请参阅技术预览功能支持范围

先决条件

  • OpenShift Container Storage 集群处于 Ready 状态。
  • 在外部密钥管理系统(KMS)上,

    • 确保存在具有令牌的策略,并且启用了 Vault 中的键值后端路径。请参阅在 Vault 中启用键值和策略
    • 确保您在 Vault 服务器上使用签名的证书。
  • 在租户命名空间中创建一个 secret,如下所示:

    • 在 OpenShift Container Platform web 控制台中进入 Workloads → Secrets
    • Create → Key/value secret
    • ceph-csi-kms-token 中输入 Secret Name
    • 输入 Key 作为 token
    • 输入值.它是来自 Vault 的令牌。您可以单击 Browse 来选择并上传含有令牌的文件,或者直接在文本框中输入令牌。
    • 点击 Create
注意

只有在所有使用 ceph-csi-kms-token 加密的 PVC 都被删除后,才可以删除令牌。

流程

  1. 导航到 StorageStorage Classes
  2. Create Storage Class
  3. 输入存储类 Name 和 Description
  4. Reclaim Policy 选择 Delete 或 Retain。默认情况下,选择 Delete。
  5. 选择 RBD Provisioner openshift-storage.rbd.csi.ceph.com,这是用于调配持久性卷的插件。
  6. 选择存储卷数据的存储池
  7. 选中"启用加密 "复选框。

    1. 默认情况下,Key Management Service Provider 设置为 Vault。
    2. 输入 Vault Service Name、Host Address of Vault 服务器('https://<hostname 或 ip>')和端口号
    3. 展开 Advanced Settings 以输入证书详细信息。

      1. 在后端路径中输入 OpenShift Container Storage 专用且唯一的值 secret 路径
      2. (可选)输入 TLS 服务器名称和 Vault Enterprise 命名空间
      3. 通过上传相应的 PEM编码证书文件提供 CA 证书 、客户端证书和客户端私钥
      4. Save
    4. 连接
  8. 检查外部密钥管理服务连接详细信息。要修改信息,请点击 Change connection details 并编辑字段。
  9. 点击 Create
  10. 如果 Hashicorp Vault 设置不允许自动检测后端路径使用的 Key/Value(KV)secret 引擎 API 版本,请编辑 configmap 来添加 VAULT_BACKEND 参数。

    注意

    VAULT_BACKEND 是一个可选参数,添加到 configmap 以指定与后端路径关联的 KV secret 引擎 API 的版本。

    1. 识别新创建的存储类使用的 encryptionKMSID

      1. 在 OpenShift Web 控制台中,导航到 Storage → Storage Classes
      2. Storage class name → YAML 标签页。
      3. 捕获存储类使用的 encryptionKMSID

        例如:

        encryptionKMSID: 1-vault
    2. 在 OpenShift Web 控制台中,导航到 Workloads → ConfigMaps
    3. 要查看 KMS 连接详情,请单击点击csi-kms-connection-details
    4. 编辑 configmap。

      1. 点击 Action 菜单 (✓)Edit ConfigMap
      2. 根据为之前标识的 encryptionKMSID 配置的后端添加 VAULT_BACKEND 参数。

        您可以为 KV secret 引擎 API、版本 1 和 kv-v2 为 KV secret 引擎 API 分配 kv,版本 2 作为 VAULT_BACKEND 参数。

        例如:

        kind: ConfigMap
        apiVersion: v1
        metadata:
          name: csi-kms-connection-details
        [...]
        data:
          1-vault: >-
        
            {
              "KMS_PROVIDER": "vaulttokens",
              "KMS_SERVICE_NAME": "vault",
              [...]
              "VAULT_BACKEND": "kv-v2"
            }
      3. Save
重要

红帽与技术合作伙伴合作,将本文档作为为客户提供服务。但是,红帽不为 Hashicorp 产品提供支持。有关此产品的技术协助,请联系 Hashicorp

第 3 章 为 OpenShift Container Platform 服务配置存储

您可以使用 OpenShift Container Storage 为 OpenShift Container Platform 服务(如镜像 registry、监控和日志记录)提供存储。

为这些服务配置存储的过程取决于 OpenShift Container Storage 部署中使用的基础架构。

警告

始终确保您具有适用于这些服务的大量存储容量。如果这些关键服务的存储空间不足,集群就会变得不可用,且很难恢复。

红帽建议为这些服务配置较短的策展和保留间隔。详情请参阅 OpenShift Container Platform 文档中的为 Prometheus 指标数据配置 Curator 调度和修改保留时间

如果您确实耗尽这些服务的存储空间,请联系红帽客户支持。

3.1. 将 Image Registry 配置为使用 OpenShift Container Storage

OpenShift Container Platform 提供了一个内建的容器镜像 Registry,它作为一个标准的工作负载在集群中运行。registry 通常用作集群中构建的镜像的发布目标,以及在集群中运行的工作负载的镜像源。

按照本节中的说明,将 OpenShift Container Storage 配置为 Container Image Registry 的存储。在 AWS 中,不需要更改 registry 的存储。但是,建议为 vSphere 和裸机平台将存储改为 OpenShift Container Storage 持久性卷。

警告

此过程不会将数据从现有镜像 registry 迁移到新镜像 registry。如果您在现有 registry 中已有容器镜像,请在完成此过程前备份 registry,并在这个过程完成后重新注册您的镜像。

先决条件

  • 具有 OpenShift Web 控制台的管理访问权限。
  • OpenShift Container Storage Operator 已安装并在 openshift-storage 命名空间中运行。在 OpenShift Web 控制台中,点 OperatorsInstalled Operators 查看已安装的 Operator。
  • Image Registry Operator 已安装并在 openshift-image-registry 命名空间中运行。在 OpenShift Web 控制台中,点 AdministrationCluster SettingsCluster Operators 查看集群操作器。
  • 带有置备程序 openshift-storage.cephfs.csi.ceph.com 的存储类可用。在 OpenShift Web 控制台中,点 Storage → Storage Classes 查看可用的存储类。

流程

  1. 为要使用的映像注册表创建持久卷声明。

    1. 在 OpenShift Web 控制台中,点击 StoragePersistent Volume Claims
    2. 将项目设置为 openshift-image-registry
    3. 单击 Create Persistent Volume Claim

      1. 在上方检索的可用存储类列表中,使用置备程序 openshift-storage.cephfs.csi.ceph.com 指定存储类。
      2. 指定持久性卷声明名称,例如 ocs4registry
      3. 指定 Shared Access (RWX) 的访问模式
      4. 指定至少 100 GB 的大小。
      5. 点击 Create

        等待新持久性卷声明的状态列为 Bound

  2. 将集群的 Image Registry 配置为使用新的持久卷声明。

    1. AdministrationCustom Resource Definitions
    2. 点击与 imageregistry.operator.openshift.io 组关联的 Config 自定义资源定义。
    3. 单击实例选项卡
    4. 在集群实例外,点击 Action Menu(⋮)Edit Config
    5. 添加新的持久性卷声明作为镜像注册表的持久性存储。

      1. spec: 下添加以下内容,如有必要替换现有的 storage: 部分。

          storage:
            pvc:
              claim: <new-pvc-name>

        例如:

          storage:
            pvc:
              claim: ocs4registry
      2. Save
  3. 验证新配置是否正在使用。

    1. 点击 WorkloadsPods
    2. 将项目设置为 openshift-image-registry
    3. 验证新 image-registry-* pod 的状态是否为 Running,并且以前的 image-registry-* pod 已终止。
    4. 点击新的 image-registry-* pod 查看 pod 详情。
    5. 向下滚动到 Volumes,再验证 registry-storage 卷有一个与新持久性卷声明匹配的 Type,如 ocs4registry

3.2. 将监控配置为使用 OpenShift Container Storage

OpenShift Container Storage 提供了一个监控堆栈,其中包含 Prometheus 和 Alert Manager。

按照本节中的说明,将 OpenShift Container Storage 配置为监控堆栈的存储。

重要

如果存储空间不足,则监控将无法正常工作。始终确保您拥有大量用于监控的存储容量。

红帽建议为此服务配置简短的保留间隔。详情请参阅 OpenShift Container Platform 文档中的 Prometheus 指标指南的修改保留时间

先决条件

  • 具有 OpenShift Web 控制台的管理访问权限。
  • OpenShift Container Storage Operator 已安装并在 openshift-storage 命名空间中运行。在 OpenShift Web 控制台中,点 OperatorsInstalled Operators 查看已安装的 Operator。
  • 监控 Operator 在 openshift-monitoring 命名空间中安装并运行。在 OpenShift Web 控制台中,点 AdministrationCluster SettingsCluster Operators 查看集群操作器。
  • 带有置备程序 openshift-storage.rbd.csi.ceph.com 的存储类可用。在 OpenShift Web 控制台中,点 Storage → Storage Classes 查看可用的存储类。

流程

  1. 在 OpenShift Web 控制台中,前往 WorkloadsConfig Maps
  2. 将项目下拉菜单设置为 openshift-monitoring
  3. 单击 Create Config Map
  4. 使用以下示例定义一个新的 cluster-monitoring-config 配置映射。

    将方括号(<>)中的内容替换为您自己的值,如 retention: 24hstorage: 40Gi

    storageClassName 替换为使用置备程序 openshift-storage.rbd.csi.ceph.comstorageclass在下面的示例中,存储类的名称为 ocs-storagecluster-ceph-rbd

    cluster-monitoring-config 配置映射示例

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: cluster-monitoring-config
      namespace: openshift-monitoring
    data:
      config.yaml: |
          prometheusK8s:
            retention: <time to retain monitoring files, e.g. 24h>
            volumeClaimTemplate:
              metadata:
                name: ocs-prometheus-claim
              spec:
                storageClassName: ocs-storagecluster-ceph-rbd
                resources:
                  requests:
                    storage: <size of claim, e.g. 40Gi>
          alertmanagerMain:
            volumeClaimTemplate:
              metadata:
                name: ocs-alertmanager-claim
              spec:
                storageClassName: ocs-storagecluster-ceph-rbd
                resources:
                  requests:
                    storage: <size of claim, e.g. 40Gi>

  5. 单击 Create 以保存并创建 Config Map。

验证步骤

  1. 验证持久卷声明是否已绑定到 pod。

    1. 进入 StoragePersistent Volume Claims
    2. 将项目下拉菜单设置为 openshift-monitoring
    3. 验证 5 个持久性卷声明的状态为 Bound,附加到三个 alertmanager-main-* pod 和两个 prometheus-k8s-* pod。

      监控创建和绑定的存储

      Screenshot of OpenShift Web Console showing five pods with persistent volume claims bound in the openshift-monitoring project

  2. 验证新 alertmanager-main-* pod 是否出现,状态为 Running

    1. 进入 WorkloadsPods
    2. 点击新的 alertmanager-main-* pod 查看 pod 详情。
    3. 向下滚动到 Volumes,并验证卷的 Type 为 ocs-alertmanager-claim,它与您的新持久性卷声明(如 ocs-alertmanager-claim-alertmanager-main-0 )匹配。

      附加到 alertmanager-main-* pod 的持久性卷声明

      Screenshot of OpenShift Web Console showing persistent volume claim attached to the altermanager pod

  3. 验证新 prometheus-k8s-* pod 是否出现,状态为 Running

    1. 点击新的 prometheus-k8s-* pod 查看 pod 详情。
    2. 向下滚动到 Volumes,并验证卷的 Type 为 ocs-prometheus-claim,它与您的新持久性卷声明(如 ocs-prometheus-claim-prometheus-k8s-0 )匹配。

      附加到 prometheus-k8s-* pod 的持久性卷声明

      Screenshot of OpenShift Web Console showing persistent volume claim attached to the prometheus pod

3.3. OpenShift Container Storage 的集群日志记录

您可以部署集群日志记录来聚合一系列 OpenShift Container Platform 服务的日志。有关如何部署集群日志记录的详情,请参考 部署集群日志记录

在初始 OpenShift Container Platform 部署时,OpenShift Container Storage 不会被默认配置,OpenShift Container Platform 集群将依赖于节点提供的默认存储。您可以编辑 OpenShift 日志记录(ElasticSearch)的默认配置,使其由 OpenShift Container Storage 支持,使其具有 OpenShift Container Storage 支持的日志记录(Elasticsearch)。

重要

始终确保您具有适用于这些服务的大量存储容量。如果您对这些关键服务的存储空间不足,日志记录应用将变得不可用,很难恢复。

红帽建议为这些服务配置较短的策展和保留间隔。详情请参阅 OpenShift Container Platform 文档中的集群日志记录 Curator

如果您缺少这些服务的存储空间,请联系红帽客户支持。

3.3.1. 配置持久性存储

您可以使用存储类名称和大小参数为 Elasticsearch 集群配置持久性存储类和大小。Cluster Logging Operator 根据这些参数为 Elasticsearch 集群中的每个数据节点创建一个持久性卷声明。例如:

spec:
    logStore:
      type: "elasticsearch"
      elasticsearch:
        nodeCount: 3
        storage:
          storageClassName: "ocs-storagecluster-ceph-rbd”
          size: "200G"

本例指定,集群中的每个数据节点将绑定到请求 200GiB 存储 ocs-storagecluster-ceph-rbd 的持久性卷声明。每个主分片将由单个副本支持。分片的副本会在所有节点之间复制,并且始终可用;如果因为单一冗余策略至少存在两个节点,则可以恢复副本。如需有关 Elasticsearch 复制策略的信息,请参阅关于部署和配置集群日志记录中的 Elasticsearch 复制策略

注意

缺少存储块将导致默认存储支持部署。例如:

spec:
    logStore:
      type: "elasticsearch"
      elasticsearch:
        nodeCount: 3
        storage: {}

如需更多信息,请参阅配置集群日志记录

3.3.2. 配置集群日志记录以使用 OpenShift Container Storage

按照本节中的说明,将 OpenShift Container Storage 配置为 OpenShift 集群日志记录的存储。

注意

您可在 OpenShift Container Storage 首次配置日志记录时获取所有日志。但是,在卸载和重新安装日志记录后,会删除旧日志并只处理新日志。

先决条件

  • 具有 OpenShift Web 控制台的管理访问权限。
  • OpenShift Container Storage Operator 已安装并在 openshift-storage 命名空间中运行。
  • openshift-logging 命名空间上安装并运行集群日志记录 Operator。

流程

  1. 从 OpenShift Web 控制台左侧窗格中,点击 Administration → Custom Resource Definitions
  2. 在 Custom Resource Definitions 页面中点ClusterLogging
  3. 在 Custom Resource Definition Overview 页面上,从 Actions 菜单中选择 View Instances,或者点击 Instances 选项卡。
  4. 在 Cluster Logging 页面上,点击 Create Cluster Logging

    您可能需要刷新页面来加载数据。

  5. 在 YAML 中,将 storageClassName 替换为使用置备程序 openshift-storage.rbd.csi.ceph.comstorageclass。在下面的示例中 storageclass 的名称为 ocs-storagecluster-ceph-rbd:

    apiVersion: "logging.openshift.io/v1"
    kind: "ClusterLogging"
    metadata:
      name: "instance"
      namespace: "openshift-logging"
    spec:
      managementState: "Managed"
      logStore:
        type: "elasticsearch"
        elasticsearch:
          nodeCount: 3
          storage:
            storageClassName: ocs-storagecluster-ceph-rbd
            size: 200G # Change as per your requirement
          redundancyPolicy: "SingleRedundancy"
      visualization:
        type: "kibana"
        kibana:
          replicas: 1
      curation:
        type: "curator"
        curator:
          schedule: "30 3 * * *"
      collection:
        logs:
          type: "fluentd"
          fluentd: {}

    如果污点了 OpenShift Container Storage 节点,您必须添加容限,以启用为日志调度 daemonset pod。

    spec:
    [...]
      collection:
        logs:
          fluentd:
            tolerations:
            - effect: NoSchedule
              key: node.ocs.openshift.io/storage
              value: 'true'
          type: fluentd
  6. Save

验证步骤

  1. 验证持久性卷声明是否与 elasticsearch pod 绑定。

    1. 进入 StoragePersistent Volume Claims
    2. 将项目下拉菜单设置为 openshift-logging
    3. 验证持久卷声明的状态为 Bound,附加到 elasticsearch-* pod。

      图 3.1. 创建并绑定集群日志记录

      Screenshot of Persistent Volume Claims with a bound state attached to elasticsearch pods
  2. 验证是否在使用新集群日志记录。

    1. Workload → Pods
    2. 将项目设置为 openshift-logging
    3. 验证新 elasticsearch-* pod 是否出现,状态为 Running
    4. 点击新的 elasticsearch-* pod 查看 pod 详情。
    5. 向下滚动到 Volumes,再验证 elasticsearch 卷是否具有与您的新持久性卷声明匹配的 Type,例如 elasticsearch-elasticsearch-cdm-9r624biv-3
    6. 点 Persistent Volume Claim 名称,然后在 PersistentVolumeClaim Overview 页面中验证存储类名称。
注意

确保使用较短的 Curator 时间,以避免在附加到 Elasticsearch Pod 的 PV 上 PV 完整场景。

您可以配置 Curator,以根据保留设置删除 Elasticsearch 数据。建议您将以下默认索引数据保留 5 天设为默认值。

config.yaml: |
    openshift-storage:
      delete:
        days: 5

如需了解更多详细信息,请参阅创建 Elasticsearch 数据

注意

要卸载由持久性卷声明支持的集群日志记录,请使用相应部署指南的卸载章节中从 OpenShift Container Storage 中删除集群日志记录 Operator 的步骤。

第 4 章 使用 OpenShift Container Storage 支持 OpenShift Container Platform 应用程序

您无法在 OpenShift Container Platform 安装过程中直接安装 OpenShift Container Storage。但是,您可以使用 Operator Hub 在现有 OpenShift Container Platform 上安装 OpenShift Container Storage,然后将 OpenShift Container Platform 应用程序配置为由 OpenShift Container Storage 支持。

先决条件

  • 已安装 OpenShift Container Platform,您还可管理 OpenShift Web 控制台。
  • OpenShift Container Storage 已安装并在 openshift-storage 命名空间中运行。

流程

  1. 在 OpenShift Web 控制台中执行以下任一操作:

    • Workloads → Deployments

      在 Deployments 页面中,您可以执行以下操作之一:

      • Action 菜单中选择任何现有部署并点击 Add Storage 选项。
      • 创建新部署,然后添加存储。

        1. 单击 Create Deployment 以创建新部署。
        2. 根据您的要求编辑 YAML 以创建部署。
        3. 点击 Create
        4. 从页面右上角的操作下拉菜单中选择 Add Storage
    • Workloads → Deployment Configs

      在 Deployment Configs 页面中,您可以执行以下操作之一:

      • Action 菜单中选择任何现有部署并点击 Add Storage 选项。
      • 创建新部署,然后添加存储。

        1. 单击 Create Deployment Config 以创建新部署。
        2. 根据您的要求编辑 YAML 以创建部署。
        3. 点击 Create
        4. 从页面右上角的操作下拉菜单中选择 Add Storage
  2. 在 Add Storage 页面中,您可以选择以下选项之一:

    • 点击 Use existing claim 选项,然后从下拉列表中选择一个合适的 PVC。
    • 单击 Create new claim 选项。

      1. Storage Class 下拉列表中选择适当的 CephFSRBD 存储类。
      2. 为持久性卷声明提供名称。
      3. 选择 ReadWriteOnce(RWO)或 ReadWriteMany(RWX)访问模式。

        注意

        ReadOnlyMany(ROX)已被取消激活,因为它不受支持。

      4. 选择所需存储容量的大小。

        注意

        您可以扩展块 PV,但无法在创建持久性卷声明后减少存储容量。

  3. 指定容器内挂载路径卷的挂载路径和子路径(如果需要)。
  4. Save

验证步骤

  1. 根据您的配置,执行以下任一操作:

    • Workloads → Deployments
    • Workloads → Deployment Configs
  2. 根据需要设置项目。
  3. 单击您添加存储的部署,以显示部署详情。
  4. 向下滚动到 Volumes ,再验证您的部署是否与您分配的持久性卷声明匹配
  5. 点 Persistent Volume Claim 名称,然后在 Persistent Volume Claim Overview 页面中验证存储类名称。

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

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

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

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

先决条件

  • 您已在 OpenShift Container Platform 版本 4.7 或更高版本上安装并运行 OpenShift Container Storage 4.7。另外,外部模式的 OpenShift 存储集群处于 Ready 状态。
  • 您的外部 Red Hat Ceph Storage 集群被配置为以下一个或多个集群:

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

流程

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

    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 集群的更新权限上限。您可能需要要求您的红帽 Ceph 存储管理员执行此操作。

    # 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. 从外部红帽 Ceph 存储集群中生成并保存配置详情。

    1. 通过在外部红帽 Ceph 存储集群中的任何客户端节点上运行 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. WorkloadsSecrets
    3. 将项目设置为 openshift-storage
    4. 单击 rook-ceph-external-cluster-details
    5. Actions (✓)→ Edit Secret
    6. 点击 Browse 并上传 external-cluster-config.json 文件。
    7. Save

验证步骤

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

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

    1. StorageStorage Classes 并验证是否已创建 ocs-external-storagecluster-ceph-rgw 存储类。
    2. 点击 OpenShift Web 控制台左侧窗格中的 HomeOverview,然后点击 Object Service 选项卡。在 Status 卡上,验证对象服务是否显示绿色勾号图标。

第 6 章 如何将专用 worker 节点用于 Red Hat OpenShift Container Storage

使用基础架构节点调度 Red Hat OpenShift Container Storage 资源可降低 Red Hat OpenShift Container Platform 订阅成本。具有 infra node-role 标签的 Red Hat OpenShift Container Platform(RHOCP)节点都需要 OpenShift Container Storage 订阅,而不是 RHOCP 订阅。

务必要在不同环境中维持 Machine API 支持的一致性。因此,强烈建议在所有情形中都有特殊类别的节点标记为 worker 或 infra,或者同时具有这两个角色。如需更多信息,请参阅 第 6.3 节 “手动创建基础架构节点” 部分。

6.1. 基础架构节点分析

用于 OpenShift Container Storage 的基础架构节点有几个属性。需要 infra node-role 标签,以确保节点不使用 RHOCP 权利。infra node-role 标签负责确保运行 OpenShift Container Storage 的节点只需要 OpenShift Container Storage 权利。

  • 标记为 node-role.kubernetes.io/infra

还需要添加具有 NoSchedule effect 的 OpenShift Container Storage 污点,以便 infra 节点只调度 OpenShift Container Storage 资源。

  • 污点 node.ocs.openshift.io/storage="true"

该标签将 RHOCP 节点识别为 infra 节点,从而不会应用 RHOCP 订阅成本。该污点可防止将非 OpenShift Container Storage 资源调度到污点节点上。

用于运行 OpenShift Container Storage 服务的基础架构节点上的污点和标签示例:

    spec:
      taints:
      - effect: NoSchedule
        key: node.ocs.openshift.io/storage
        value: "true"
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/worker: ""
          node-role.kubernetes.io/infra: ""
          cluster.ocs.openshift.io/openshift-storage: ""

6.2. 用于创建基础架构节点的机器集

如果环境中支持 Machine API,则应将标签添加到要调配基础架构节点的 Machine Sets 的模板中。避免将标签手动添加到机器 API 创建的节点的反模式。这样做类似于向部署创建的 pod 添加标签。在这两种情况下,pod/节点失败时,替代的 pod/节点都将没有适当的标签。

注意

在 EC2 环境中,您将需要三个计算机集,各自配置为在不同的可用区(如 us-east-2a、us-east-2b、us-east-2b、us-east-2c)中调配基础架构节点。目前,OpenShift Container Storage 不支持在超过三个可用区部署。

以下 Machine Set 模板示例创建具有基础架构节点所需的适当污点和标签的节点。这将用于运行 OpenShift Container Storage 服务。

  template:
    metadata:
      creationTimestamp: null
      labels:
        machine.openshift.io/cluster-api-cluster: kb-s25vf
        machine.openshift.io/cluster-api-machine-role: worker
        machine.openshift.io/cluster-api-machine-type: worker
        machine.openshift.io/cluster-api-machineset: kb-s25vf-infra-us-west-2a
    spec:
      taints:
      - effect: NoSchedule
        key: node.ocs.openshift.io/storage
        value: "true"
      metadata:
        creationTimestamp: null
        labels:
          node-role.kubernetes.io/infra: ""
          cluster.ocs.openshift.io/openshift-storage: ""

6.3. 手动创建基础架构节点

只有环境中不支持 Machine API 时,标签才应直接应用到节点。手动创建要求至少可使用 3 个 RHOCP worker 节点来调度 OpenShift Container Storage 服务,并且这些节点有足够的 CPU 和内存资源。要避免 RHOCP 订阅成本,需要以下内容:

oc label node <node> node-role.kubernetes.io/infra=""
oc label node <node> cluster.ocs.openshift.io/openshift-storage=""

还需要添加 NoSchedule OpenShift Container Storage 污点,以便 infra 节点只调度 OpenShift Container Storage 资源,并排斥任何其他非 OpenShift Container Storage 工作负载。

oc adm taint node <node> node.ocs.openshift.io/storage="true":NoSchedule
警告

不要删除 node-role node-role.kubernetes.io/worker=""

除非对 OpenShift 调度程序和 MachineConfig 资源进行了更改,否则删除 node-role.kubernetes.io/worker="" 可能会导致问题。

如果已删除,则应再次将其添加到每个 infra 节点中。添加 node-role node-role.kubernetes.io/infra="" 和 OpenShift Container Storage 污点足以满足权利的要求。

第 7 章 管理持久性卷声明

7.1. 将应用程序 pod 配置为使用 OpenShift Container Storage

按照本节中的说明,将 OpenShift Container Storage 配置为应用程序 pod 的存储。

先决条件

  • 具有 OpenShift Web 控制台的管理访问权限。
  • OpenShift Container Storage Operator 已安装并在 openshift-storage 命名空间中运行。在 OpenShift Web 控制台中,点 OperatorsInstalled Operators 查看已安装的 Operator。
  • OpenShift Container Storage 提供的默认存储类可用。在 OpenShift Web 控制台中,点 StorageStorage Classes 查看默认存储类。

流程

  1. 为要使用的应用创建持久性卷声明(PVC)。

    1. 在 OpenShift Web 控制台中,点击 StoragePersistent Volume Claims
    2. 设置应用容器集的项目
    3. 单击 Create Persistent Volume Claim

      1. 指定 OpenShift Container Storage 提供的存储类
      2. 指定 PVC 名称,如 myclaim
      3. 选择所需的 Access Mode
      4. 根据应用程序要求指定一个大小
      5. Create 并等待 PVC 处于 Bound 状态。
  2. 配置新的或现有应用容器集以使用新 PVC。

    • 对于新应用程序 pod,执行以下步骤:

      1. WorkloadsPods
      2. 创建新的应用 pod。
      3. spec: 部分下,添加 volume: 部分以添加新 PVC 作为应用程序 pod 的卷。

        volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>

        例如:

        volumes:
          - name: mypd
            persistentVolumeClaim:
              claimName: myclaim
    • 对于现有应用程序 pod,执行以下步骤:

      1. WorkloadsDeployment Configs
      2. 搜索与应用程序 pod 关联的所需部署配置。
      3. 点击其 Action 菜单(¹)Edit Deployment Config
      4. spec: 部分,添加 volume: 部分,将新 PVC 添加为应用程序 pod 的卷并点 Save

        volumes:
          - name: <volume_name>
            persistentVolumeClaim:
              claimName: <pvc_name>

        例如:

        volumes:
          - name: mypd
            persistentVolumeClaim:
              claimName: myclaim
  3. 验证新配置是否正在使用。

    1. 点击 WorkloadsPods
    2. 设置应用容器集的项目
    3. 验证应用 pod 的状态是否为 Running
    4. 单击应用容器集名称,以查看容器集详细信息。
    5. 向下滚动到 Volumes 部分,再验证卷的 Type 与您的新持久性卷声明匹配,例如 myclaim

7.2. 查看持久性卷声明请求状态

使用这个流程查看 PVC 请求的状态。

先决条件

  • 管理员对 OpenShift Container Storage 的访问权限。

流程

  1. 登录 OpenShift Web 控制台。
  2. StoragePersistent Volume Claims
  3. 使用 Filter 文本框搜索所需的 PVC 名称。您还可以按 Name 或 Label 过滤 PVC 列表来缩小列表范围
  4. 检查与所需 PVC 对应的 Status 列。
  5. 点所需的 Name 查看 PVC 详情。

7.3. 查看持久性卷声明请求事件

使用这个流程来查看和解决持久性卷声明(PVC)请求事件。

先决条件

  • 管理员对 OpenShift Web 控制台的访问权限.

流程

  1. 登录 OpenShift Web 控制台。
  2. HomeOverviewPersistent Storage
  3. 找到 Inventory 卡,查看 PVC 数量并显示错误。
  4. StoragePersistent Volume Claims
  5. 使用 Filter 文本框搜索所需的 PVC。
  6. 点 PVC 名称并导航到 Events
  7. 根据需要或按指示处理事件。

7.4. 扩展持久性卷声明

OpenShift Container Storage 4.6 能够扩展持久性卷声明,在管理持久性存储资源方面提供更多灵活性。

以下持久性卷支持扩展:

  • 具有 ReadWriteOnce(RWO)和 ReadWriteMany(RWX)访问权限的 PVC,这些访问基于 Ceph 文件系统(CephFS)用于卷模式 Filesystem
  • 具有 ReadWriteOnce(RWO)访问的 PVC,它基于卷模式 Filesystem 的 Ceph RADOS 块设备(RBD)
  • 具有 ReadWriteOnce(RWO)访问的 PVC,它基于卷模式 Block 的 Ceph RADOS 块设备(RBD)
警告

红帽不支持 OSD 和 MON PVC 扩展。

先决条件

  • 管理员对 OpenShift Web 控制台的访问权限.

流程

  1. 在 OpenShift Web 控制台中,导航到 StoragePersistent Volume Claims
  2. 点击您要扩展的持久性卷声明旁边的 Action Menu(⋮)。
  3. 点击 Expand PVC:

    Persistent Volume Claims Expand PVC menu item
  4. 选择持久性卷声明的新大小,然后点击 Expand

    Expand Persistent Volume Claim wizard
  5. 要验证扩展,请导航到 PVC 的详情页面,并验证 Capacity 字段是否具有请求的正确大小。

    注意

    当基于 Ceph RADOS 块设备(RBD)扩展 PVC 时,如果 PVC 尚未附加到 pod,Condition type 在 PVC 详情页面中是 FileSystemResizePending。挂载卷后,文件系统大小调整成功,并在 Capacity 字段中反映新大小。

7.5. 动态置备

7.5.1. 关于动态置备

StorageClass 资源对象描述并分类了可请求的存储,并提供了根据需要为动态置备存储传递参数的方法。StorageClass 也可以作为控制不同级别的存储和访问存储的管理机制。集群管理员(cluster-admin)可以在无需了解底层存储卷资源的情况下,定义并创建用户可以请求的 StorageClass 对象。storage-admin

OpenShift Container Platform 的持久性卷框架启用了这个功能,并允许管理员为集群提供持久性存储。该框架还可让用户在不了解底层存储架构的情况下请求这些资源。

很多存储类型都可用于 OpenShift Container Platform 中的持久性卷。虽然它们都可以由管理员静态置备,但有些类型的存储是使用内置供应商和插件 API 动态创建的。

7.5.2. OpenShift Container Storage 中的动态置备

Red Hat OpenShift Container Storage 是软件定义的存储,针对容器环境优化。它在 OpenShift Container Platform 上作为操作器运行,为容器提供高度集成和简化的持久性存储管理。

OpenShift Container Storage 支持各种存储类型,包括:

  • 数据库的块存储
  • 共享文件存储,用于持续集成、消息传递和数据聚合
  • 归档、备份和介质存储的对象存储

第 4 版使用红帽 Ceph 存储来提供支持持久卷的文件、块和对象存储,以及 Rook.io 来管理和编排持久卷和声明的调配。NooBaa 提供对象存储,其多云网关允许在多个云环境中联合对象(作为技术预览使用)。

在 OpenShift Container Storage 4 中,RADOS 块设备(RBD)和 Ceph 文件系统(CephFS)的 Red Hat Ceph Storage Container Storage Interface(CSI)驱动程序处理动态置备请求。当 PVC 请求动态进入时,CSI 驱动程序有以下选项:

  • 创建一个具有 ReadWriteOnce(RWO)和 ReadWriteMany(RWX)访问权限的 PVC,它基于具有卷模式的 Ceph RBD Block
  • 创建一个具有 ReadWriteOnce(RWO)访问权限的 PVC,它基于具有卷模式的 Ceph RBD Filesystem
  • 为卷模式创建一个基于 CephFS 的 ReadWriteOnce(RWO)和 ReadWriteMany(RWX)访问的 PVC Filesystem

判断要使用的驱动程序(RBD 或 CephFS)取决于 storageclass.yaml 文件中的条目。

7.5.3. 可用的动态部署插件

OpenShift Container Platform 提供了以下置备程序插件,用于使用集群配置的供应商 API 创建新存储资源的动态部署:

存储类型provisioner 插件名称备注

OpenStack Cinder

kubernetes.io/cinder

 

AWS Elastic Block Store (EBS)

kubernetes.io/aws-ebs

对于在不同区中使用多个集群进行动态置备,使用 Key=kubernetes.io/cluster/<cluster_name>,Value=<cluster_id> 标记每个节点,其中 <cluster_name><cluster_id> 各自是唯一的。

AWS Elastic File System (EFS)

 

动态置备通过 EFS provisioner pod 实现,而不是通过置备程序插件实现。

Azure Disk

kubernetes.io/azure-disk

 

Azure File

kubernetes.io/azure-file

persistent-volume-binder ServiceAccount 需要相应的权限来创建并获取 Secret 来存储 Azure 存储帐户和密钥。

GCE 持久性磁盘 (gcePD)

kubernetes.io/gce-pd

在多区(multi-zone)配置中,建议在每个 GCE 项目中运行一个 OpenShift Container Platform 集群,以避免在当前集群没有节点的区域中创建 PV。

VMware vSphere

kubernetes.io/vsphere-volume

 

Red Hat Virtualization

csi.ovirt.org

 
重要

任何选择的置备程序插件还需要根据相关文档为相关的云、主机或者第三方供应商配置。

第 8 章 卷快照

卷快照是集群中特定时间点的存储卷的状态。这些快照有助于更有效地使用存储,不必每次都制作完整的副本,也可用作应用程序开发的构建块。

卷快照类允许管理员指定属于卷快照对象的不同属性。OpenShift Container Storage Operator 根据使用的平台安装默认卷快照类。Operator 拥有并控制这些默认卷快照类,且无法删除或修改它们。

您可以创建同一持久性卷声明(PVC)的多个快照。对于 CephFS,您可以为每个 PVC 创建最多 100 个快照。对于 RADOS 块设备(RBD),您可以为每个 PVC 创建最多 512 个快照。

注意

您无法计划定期创建快照。

8.1. 创建卷快照

您可以从持久性卷声明(PVC)页面或 Volume Snapshots 页面创建卷快照。

先决条件

  • 对于一致的快照,PVC 应该处于 Bound 状态且不使用。确保先停止所有 IO,然后再执行快照
注意

只有 pod 使用时,OpenShift Container Storage 才会为 PVC 的卷快照提供崩溃一致性。若要确保应用一致性,请务必先停止正在运行的容器集,以确保快照的一致性,或使用应用提供的任何静默机制来确保快照的一致性。

流程

在持久性卷声明页中显示
  1. 从 OpenShift Web 控制台点 StoragePersistent Volume Claims
  2. 要创建卷快照,请执行以下操作之一:

    • 在所需 PVC 旁边,点 Action 菜单 (⋮)Create Snapshot
    • 点击您要创建快照的 PVC,然后点击 ActionsCreate Snapshot
  3. 输入卷快照的名称
  4. 从下拉列表中选择 Snapshot Class
  5. 点击 Create。您将被重定向到所创建的卷快照的 Details 页面。
从 Volume Snapshots 页面中
  1. 从 OpenShift Web 控制台点 StorageVolume Snapshots
  2. Volume Snapshots 页面中,单击 Create Volume Snapshot
  3. 从下拉列表中选择所需的项目
  4. 从下拉列表中选择持久性卷声明
  5. 输入快照的名称
  6. 从下拉列表中选择 Snapshot Class
  7. 点击 Create。您将被重定向到所创建的卷快照的 Details 页面。

验证步骤

  • 进入 PVC 的 Details 页面,然后点击 Volume Snapshots 选项卡查看卷快照列表。验证是否列出了新卷快照。
  • 从 OpenShift Web 控制台点 StorageVolume Snapshots。验证是否列出了新卷快照。
  • 等待卷快照处于 Ready 状态。

8.2. 恢复卷快照

恢复卷快照时,会创建一个新的持久性卷声明(PVC)。恢复的 PVC 独立于卷快照和父 PVC。

您可以从 PVC 页面或 Volume Snapshots 页面恢复卷快照。

流程

在持久性卷声明页中显示

只有在存在父 PVC 时,才可以从持久性卷声明页面恢复卷快照。

  1. 从 OpenShift Web 控制台点 StoragePersistent Volume Claims
  2. 点击 PVC 名称及卷快照将卷快照恢复为新 PVC。
  3. Volume Snapshots 选项卡中,点您要恢复的卷快照旁的 Action 菜单(⋮)。
  4. Restore 作为新 PVC
  5. 输入新 PVC 的名称。
  6. 选择您选择的 Access Mode

    重要

    ReadOnlyMany(ROX)访问模式是一个开发者预览功能,它受到开发人员预览支持的限制。开发人员预览版本不应在生产环境中运行,且不受红帽客户门户网站问题单管理系统的支持。如果您需要 ReadOnlyMany 功能的帮助,请联络 ocs-devpreview@redhat.com 邮件列表和红帽开发团队成员将根据可用性和工作计划尽快为您提供协助。请参阅使用新的只读访问模式创建克隆或恢复快照以使用 ROX 访问模式。

  7. 选择 Storage Class name。

    注意

    对于 Rados 块设备(RBD),您必须选择一个与父 PVC 池相同的存储类。

  8. 单击 Restore。您将被重定向到新的 PVC 详情页面。
从 Volume Snapshots 页面中
  1. 从 OpenShift Web 控制台点 StorageVolume Snapshots
  2. Volume Snapshots 选项卡中,点您要恢复的卷快照旁的 Action 菜单(⋮)。
  3. Restore 作为新 PVC
  4. 输入新 PVC 的名称。
  5. 选择您选择的 Access Mode

    重要

    ReadOnlyMany(ROX)访问模式是一个开发者预览功能,它受到开发人员预览支持的限制。开发人员预览版本不应在生产环境中运行,且不受红帽客户门户网站问题单管理系统的支持。如果您需要 ReadOnlyMany 功能的帮助,请联络 ocs-devpreview@redhat.com 邮件列表和红帽开发团队成员将根据可用性和工作计划尽快为您提供协助。请参阅使用新的只读访问模式创建克隆或恢复快照以使用 ROX 访问模式。

  6. 选择 Storage Class name。

    注意

    对于 Rados 块设备(RBD),您必须选择一个与父 PVC 池相同的存储类。

  7. 单击 Restore。您将被重定向到新的 PVC 详情页面。

验证步骤

  • 从 OpenShift Web 控制台点 StoragePersistent Volume Claims,并确认新 PVC 在 Persistent Volume Claims 页面中列出。
  • 等待新 PVC 进入 Bound 状态。

8.3. 删除卷快照

先决条件

  • 要删除卷快照,应存在该特定卷快照中使用的卷快照类。

流程

从持久性卷声明页面
  1. 从 OpenShift Web 控制台点 StoragePersistent Volume Claims
  2. 点击具有需要删除卷快照的 PVC 名称。
  3. Volume Snapshots 选项卡中,点击所需卷快照旁的 Action 菜单(⋮)Delete Volume Snapshot
从卷快照页面
  1. 从 OpenShift Web 控制台点 StorageVolume Snapshots
  2. Volume Snapshots 页面中,点击所需卷快照菜单(⋮)Delete Volume Snapshot 旁。

验证步骤

  • 确保 PVC 详情页面的 Volume Snapshots 选项卡中没有删除的卷快照。
  • StorageVolume Snapshots 并确保不会列出删除的卷快照。

第 9 章 卷克隆

克隆是现有存储卷的副本,用作任何标准卷。您可以创建一个卷克隆,以达到数据的时间副本。持久性卷声明(PVC)不能使用不同的大小克隆。您可以为每个 PVC 为 CephFS 和 RADOS 块设备(RBD)创建最多 512 个克隆。

9.1. 创建克隆

先决条件

  • 源 PVC 必须处于 Bound 状态,且不得正在使用。
注意

如果 Pod 正在使用 PVC,则不要创建 PVC 克隆。这样做可能会导致数据崩溃,因为 PVC 没有被静默(暂停)。

流程

  1. 从 OpenShift Web 控制台点 StoragePersistent Volume Claims
  2. 要创建克隆,请执行以下操作之一:

    • 在所需的 PVC 旁边,点 Action 菜单 (⋮)Clone PVC
    • 点击您要克隆的 PVC,然后点击 ActionsClone PVC
  3. 输入克隆的名称
  4. 选择您选择的访问模式。

    重要

    ReadOnlyMany(ROX)访问模式是一个开发者预览功能,它受到开发人员预览支持的限制。开发人员预览版本不应在生产环境中运行,且不受红帽客户门户网站问题单管理系统的支持。如果您需要 ReadOnlyMany 功能的帮助,请联络 ocs-devpreview@redhat.com 邮件列表和红帽开发团队成员将根据可用性和工作计划尽快为您提供协助。请参阅使用新的只读访问模式创建克隆或恢复快照以使用 ROX 访问模式。

  5. 单击 Clone。您将被重定向到新的 PVC 详情页面。
  6. 等待克隆的 PVC 状态变为 Bound

    克隆的 PVC 现在可以被 pod 使用。这个克隆的 PVC 独立于其 dataSource PVC。

第 10 章 管理容器存储接口(CSI)组件放置

每个集群由多个专用节点组成,如 infrastorage 节点。但是,具有自定义污点的 infra 节点将无法在该节点上使用 OpenShift Container Storage 持久性卷声明(PVC)。因此,如果要使用这样的节点,可以设置容限以便在节点上启动 csi-plugins。如需更多信息,请参阅 https://access.redhat.com/solutions/4827161

流程

  1. 编辑 configmap,为自定义污点添加容限。记住要在退出编辑器之前保存。

    $ oc edit configmap rook-ceph-operator-config -n openshift-storage
  2. 显示 configmap 以检查添加的容限。

    $ oc get configmap rook-ceph-operator-config -n openshift-storage -o yaml

    为污点添加的容限的输出示例 nodetype=infra:NoSchedule

    apiVersion: v1
    data:
    [...]
      CSI_PLUGIN_TOLERATIONS: |
        - key: nodetype
          operator: Equal
          value: infra
          effect: NoSchedule
        - key: node.ocs.openshift.io/storage
          operator: Equal
          value: "true"
          effect: NoSchedule
    [...]
    kind: ConfigMap
    metadata:
    [...]
  3. 如果 csi-cephfsplugin-* 和 csi-rbdplugin-* pod 无法自行在 infra 节点上出现,请重启 rook-ceph-operator

    $ oc delete -n openshift-storage pod <name of the rook_ceph_operator pod>

    示例:

    $ oc delete -n openshift-storage pod rook-ceph-operator-5446f9b95b-jrn2j
    
    pod "rook-ceph-operator-5446f9b95b-jrn2j" deleted

验证步骤

验证 csi-cephfsplugin-* 和 csi-rbdplugin-* pod 是否在 infra 节点上运行。