5.10. OpenStack Manila CSI Driver Operator

5.10.1. 概述

OpenShift Container Platform 可以使用 OpenStack Manila 共享文件系统服务的 Container Storage Interface(CSI)驱动程序置备持久性卷(PV)。

在使用 Container Storage Interface(CSI)Operator 和驱动器时,请先熟悉持久性存储配置 CSI 卷

要创建挂载到 Manila 存储资产中的 CSI 置备 PV,OpenShift Container Platform 会在所有启用了 Manila 服务的 OpenStack 集群上默认安装 Manila CSI Driver Operator 和 Manila CSI 驱动程序。

  • Manila CSI Driver Operator 会创建所需的存储类,以为所有可用 Manila 共享类型创建 PVC。Operator 安装在 openshift-cluster-csi-drivers 命名空间中。
  • Manila CSI 驱动程序允许您创建并挂载 Manila PV。该驱动程序安装在 openshift-manila-csi-driver 命名空间中。

5.10.2. 关于 CSI

在过去,存储厂商一般会把存储驱动作为 Kubernetes 的一个部分提供。随着容器存储接口 (CSI) 的实现,第三方供应商可以使用标准接口来提供存储插件,而无需更改核心 Kubernetes 代码。

CSI Operators 为 OpenShift Container Platform 用户提供了存储选项,如卷快照,它无法通过 in-tree 卷插件实现。

5.10.3. Manila CSI Driver Operator 限制

以下限制适用于 Manila Container Storage Interface (CSI) Driver Operator:

仅支持 NFS
OpenStack Manila 支持许多网络附加存储协议,如 NFS、CIFS 和 CEPHFS,它们可以在 OpenStack 云中有选择地启用。OpenShift Container Platform 中的 Manila CSI Driver Operator 只支持使用 NFS 协议。如果在底层的 OpenStack 云中没有 NFS 并启用了 NFS,则无法使用 Manila CSI Driver Operator 为 OpenShift Container Platform 置备存储。
如果后端是 CephFS-NFS,则不支持快照
要获取持久性卷 (PV) 快照并将卷恢复到快照,您必须确保使用的 Manila 共享类型支持这些功能。Red Hat OpenStack 管理员必须启用对快照 (share type extra-spec snapshot_support)的支持,并从与您要使用的存储类相关联的快照(share type extra-spec create_share_from_snapshot_support)创建共享。
不支持 FSGroups
因为 Manila CSI 提供了由多个读入者和多个写入者访问的共享文件系统,所以不支持 FSGroups。即使使用 ReadWriteOnce 访问模式创建的持久性卷也是如此。因此,务必不要在您手动创建的任何存储类中指定 fsType 属性,以便与 Manila CSI Driver 搭配使用。
重要

在 Red Hat OpenStack Platform 16.x 和 17.x 中,带有 CephFS 的共享文件系统服务 (Manila) 完全支持通过 Manila CSI 向 OpenShift Container Platform 提供共享。但是,此解决方案不适用于大规模扩展。务必查看 Red Hat OpenStack Platform 的 CephFS NFS Manila-CSI Workload Recommendations 中的重要建议。

5.10.4. 动态置备 Manila CSI 卷

OpenShift Container Platform 为每个可用 Manila 共享类型安装一个存储类。

所创建的 YAML 文件与 Manila 及其 Container Storage Interface(CSI)插件完全分离。作为应用程序开发人员,您可以动态置备 ReadWriteMany(RWX)存储,并部署应用程序 pod 使用 YAML 清单安全地使用存储。

在您的内部环境中,可以使用与 AWS、GCP、Azure 和其他平台中的 OpenShift Container Platform 使用的相同的 pod 和持久性卷声明(PVC)定义(PVC 定义中的存储类引用除外)。

注意

Manila 服务是可选的。如果 Red Hat OpenStack Platform(RHOSP)中没有启用该服务,则不会安装 Manila CSI 驱动程序,也不会创建 Manila 存储类。

先决条件

  • RHOSP 被部署为带有适当的 Manila 共享基础架构,以便使用它来在 OpenShift Container Platform 中动态置备和挂载卷。

流程 (UI)

使用 web 控制台动态创建 Manila CSI 卷:

  1. 在 OpenShift Container Platform 控制台中,点击 StoragePersistent Volume Claims
  2. 在持久性卷声明概述页中,点 Create Persistent Volume Claim
  3. 在接下来的页面中定义所需选项。

    1. 选择适当的存储类。
    2. 输入存储声明的唯一名称。
    3. 选择访问模式来指定您要创建的 PVC 的读写访问权限。

      重要

      如果您希望此 PVC 所使用的持久性卷(PV)可以被挂载到集群中的多个节点上的多个 pod 时,使用 RWX。

  4. 定义存储声明的大小。
  5. 点击 Create 创建持久性卷声明,并生成一个持久性卷。

流程 (CLI)

使用命令行界面(CLI)动态创建 Manila CSI 卷:

  1. 使用以下 YAML 描述的 PersistentVolumeClaim 对象创建并保存一个文件:

    pvc-manila.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-manila
    spec:
      accessModes: 1
        - ReadWriteMany
      resources:
        requests:
          storage: 10Gi
      storageClassName: csi-manila-gold 2

    1
    如果您希望此 PVC 所使用的持久性卷(PV)可以被挂载到集群中的多个节点上的多个 pod 时,使用 RWX。
    2
    置备存储后端的存储类的名称。Manila StorageClasses 由 Operator 置备,并包含 csi-manila- 前缀。
  2. 运行以下命令,创建上一步中保存的对象:

    $ oc create -f pvc-manila.yaml

    创建了一个新的 PVC。

  3. 运行以下命令验证卷已创建并就绪:

    $ oc get pvc pvc-manila

    pvc-manila 显示它的状态为 Bound

现在,您可以使用新的 PVC 来配置 pod。

其他资源