5.17. Red Hat Virtualization CSI Driver Operator

5.17.1. 概述

OpenShift Container Platform 可以使用 Red Hat Virtualization(RHV)的 Container Storage Interface(CSI)驱动程序置备持久性卷(PV)。

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

要创建挂载到 Red Hat Virtualization(RHV)存储资产中的 CSI 置备 PV,OpenShift Container Platform 在 openshift-cluster-csi-drivers 命名空间中默认安装 oVirt CSI Driver Operator 和 oVirt CSI 驱动程序。

  • oVirt CSI Driver Operator 提供了一个默认的 StorageClass 对象,您可以使用它来创建持久性卷声明(PVC)。
  • oVirt CSI 驱动程序允许您创建并挂载 oVirt PV。

5.17.2. 关于 CSI

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

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

注意

oVirt CSI 驱动程序不支持快照。

5.17.3. Red Hat Virtualization (RHV) CSI 驱动程序存储类

OpenShift Container Platform 创建了一个名为 ovirt-csi-scStorageClass 类型的默认对象,用于创建动态置备的持久性卷。

要为不同的配置创建额外的存储类,请使用以下示例 YAML 描述的 StorageClass 对象创建并保存文件:

ovirt-storageclass.yaml

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: <storage_class_name>  1
  annotations:
    storageclass.kubernetes.io/is-default-class: "<boolean>"  2
provisioner: csi.ovirt.org
allowVolumeExpansion: <boolean> 3
reclaimPolicy: Delete 4
volumeBindingMode: Immediate 5
parameters:
  storageDomainName: <rhv-storage-domain-name> 6
  thinProvisioning: "<boolean>"  7
  csi.storage.k8s.io/fstype: <file_system_type> 8

1
存储类的名称。
2
如果存储类是集群中的默认存储类,则设置为 false。如果设置为 true,现有的默认存储类必须被编辑并设置为 false
3
true 启用动态卷扩展,false 会阻止它。建议使用 true
4
此存储类的动态置备持久性卷会使用此重新声明策略创建。这个默认策略是 Delete
5
指明如何置备和绑定 PersistentVolumeClaim。如果没有设置,则使用 VolumeBindingImmediate。此字段仅由启用 VolumeScheduling 功能的服务器应用。
6
要使用的 RHV 存储域名。
7
如果为 true,则置备磁盘。如果为 false,则预先分配磁盘。建议精简置备。
8
可选:要创建的文件系统类型。可能的值: ext4(默认)或 xfs

5.17.4. 在 RHV 上创建持久性卷

创建 PersistentVolumeClaim(PVC) 对象时,OpenShift Container Platform 会置备一个新的持久性卷(PV)并创建一个 PersistentVolume 对象。

先决条件

  • 登陆到一个正在运行的 OpenShift Container Platform 集群。
  • 您在 ovirt-credentials secret 中提供了正确的 RHV 凭证。
  • 已安装 oVirt CSI 驱动程序。
  • 您至少定义了一个存储类。

流程

  • 如果您使用 web 控制台在 RHV 上动态创建持久性卷:

    1. 在 OpenShift Container Platform 控制台中,点击 StoragePersistent Volume Claims
    2. 在持久性卷声明概述页中,点 Create Persistent Volume Claim
    3. 在接下来的页面中定义所需选项。
    4. 选择正确的 StorageClass 对象,默认为 ovirt-csi-sc
    5. 输入存储声明的唯一名称。
    6. 选择访问模式。目前,RWO(ReadWriteOnce)是唯一受支持的访问模式。
    7. 定义存储声明的大小。
    8. 选择卷模式:

      Filesystem:作为目录挂载到 pod。这个模式是默认的模式。

      Block:会设备,其中没有任何文件系统

    9. Create 创建 PersistentVolumeClaim 对象并生成 PersistentVolume 对象。
  • 如果您使用命令行界面(CLI)来动态创建 RHV CSI 卷:

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

      pvc-ovirt.yaml

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: pvc-ovirt
      spec:
        storageClassName: ovirt-csi-sc 1
        accessModes:
          - ReadWriteOnce
        resources:
          requests:
            storage: <volume size>  2
        volumeMode: <volume mode> 3

      1
      所需的存储类的名称。
      2
      GiB 中的卷大小。
      3
      支持的选项:
      • Filesystem:作为目录挂载到 pod。这个模式是默认的模式。
      • Block:会设备,其中没有任何文件系统。
    2. 运行以下命令,创建上一步中保存的对象:

      $ oc create -f pvc-ovirt.yaml
    3. 运行以下命令验证卷已创建并就绪:

      $ oc get pvc pvc-ovirt

      pvc-ovirt 显示它的状态为 Bound。