5.21. Red Hat Virtualization CSI Driver Operator
5.21.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.21.2. 关于 CSI
在过去,存储厂商一般会把存储驱动作为 Kubernetes 的一个部分提供。随着容器存储接口 (CSI) 的实现,第三方供应商可以使用标准接口来提供存储插件,而无需更改核心 Kubernetes 代码。
CSI Operators 为 OpenShift Container Platform 用户提供了存储选项,如卷快照,它无法通过 in-tree 卷插件实现。
oVirt CSI 驱动程序不支持快照。
5.21.3. Red Hat Virtualization (RHV) CSI 驱动程序存储类
OpenShift Container Platform 创建了一个名为 ovirt-csi-sc
的 StorageClass
类型的默认对象,用于创建动态置备的持久性卷。
要为不同的配置创建额外的存储类,请使用以下示例 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.21.4. 在 RHV 上创建持久性卷
创建 PersistentVolumeClaim
(PVC) 对象时,OpenShift Container Platform 会置备一个新的持久性卷(PV)并创建一个 PersistentVolume
对象。
先决条件
- 登陆到一个正在运行的 OpenShift Container Platform 集群。
-
您在
ovirt-credentials
secret 中提供了正确的 RHV 凭证。 - 已安装 oVirt CSI 驱动程序。
- 您至少定义了一个存储类。
流程
如果您使用 web 控制台在 RHV 上动态创建持久性卷:
-
在 OpenShift Container Platform 控制台中,点击 Storage
Persistent Volume Claims。 - 在持久性卷声明概述页中,点 Create Persistent Volume Claim。
- 在接下来的页面中定义所需选项。
-
选择正确的
StorageClass
对象,默认为ovirt-csi-sc
。 - 输入存储声明的唯一名称。
- 选择访问模式。目前,RWO(ReadWriteOnce)是唯一受支持的访问模式。
- 定义存储声明的大小。
选择卷模式:
Filesystem
:作为目录挂载到 pod。这个模式是默认的模式。Block
:会设备,其中没有任何文件系统-
点 Create 创建
PersistentVolumeClaim
对象并生成PersistentVolume
对象。
-
在 OpenShift Container Platform 控制台中,点击 Storage
如果您使用命令行界面(CLI)来动态创建 RHV CSI 卷:
使用以下示例 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
运行以下命令,创建上一步中保存的对象:
$ oc create -f pvc-ovirt.yaml
运行以下命令验证卷已创建并就绪:
$ oc get pvc pvc-ovirt
pvc-ovirt
显示它的状态为 Bound。
如果需要更新 Operator 凭证,请参阅如何在 OCP 4 中修改 RHV 凭证。