6.17. OpenStack Cinder CSI Driver Operator
6.17.1. 概述
OpenShift Container Platform 可以使用 OpenStack Cinder 的 Container Storage Interface(CSI)驱动程序置备持久性卷(PV)。
在使用 Container Storage Interface (CSI) Operator 和驱动时,我们建议用户需要熟悉持久性存储和配置 CSI 卷。
					要创建挂载到 OpenStack Cinder 存储资产中的 CSI 置备 PV,OpenShift Container Platform 在 openshift-cluster-csi-drivers 命名空间中安装 OpenStack Cinder CSI Driver Operator 和 OpenStack Cinder CSI 驱动程序。
				
- OpenStack Cinder CSI Driver Operator 提供了一个 CSI 存储类,可用于创建 PVC。如果需要,您可以禁用此默认存储类 (请参阅管理默认存储类)。
- OpenStack Cinder CSI 驱动程序 允许您创建并挂载 OpenStack Cinder PV。
OpenShift Container Platform 为 Cinder in-tree 卷插件提供自动迁移到对应的 CSI 驱动程序。如需更多信息,请参阅 CSI 自动迁移。
6.17.2. 关于 CSI
在过去,存储厂商一般会把存储驱动作为 Kubernetes 的一个部分提供。随着容器存储接口 (CSI) 的实现,第三方供应商可以使用标准接口来提供存储插件,而无需更改核心 Kubernetes 代码。
CSI Operators 为 OpenShift Container Platform 用户提供了存储选项,如卷快照,它无法通过 in-tree 卷插件实现。
OpenShift Container Platform 默认使用 CSI 插件来置备 Cinder 存储。
6.17.3. 使 OpenStack Cinder CSI 成为默认存储类
					OpenStack Cinder CSI 驱动程序使用 cinder.csi.openstack.org 参数键来支持动态置备。
				
					要在 OpenShift Container Platform 中启用 OpenStack Cinder CSI 置备,建议您使用 standard-csi 覆盖默认的树内存储类。另外,您可以创建持久性卷声明(PVC),并将存储类指定为 "standard-csi"。
				
在 OpenShift Container Platform 中,默认存储类引用树内 Cinder 驱动程序。但是,启用了 CSI 自动迁移后,使用默认存储类创建的卷实际上使用 CSI 驱动程序。
流程
						使用以下步骤通过覆盖默认的树内存储类来应用 standard-csi 存储类。
					
- 列出存储类: - oc get storageclass - $ oc get storageclass- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h standard-csi kubernetes.io/cinder Delete WaitForFirstConsumer true 46h - NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h standard-csi kubernetes.io/cinder Delete WaitForFirstConsumer true 46h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 对于默认存储类,将注解 - storageclass.kubernetes.io/is-default-class的值改为- false,如下例所示:- oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'- $ oc patch storageclass standard -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过添加或修改注解 - storageclass.kubernetes.io/is-default-class=true 来使另一个存储类作为默认设置。- oc patch storageclass standard-csi -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'- $ oc patch storageclass standard-csi -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 验证 PVC 现在默认引用 CSI 存储类: - oc get storageclass - $ oc get storageclass- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard kubernetes.io/cinder Delete WaitForFirstConsumer true 46h standard-csi(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h - NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE standard kubernetes.io/cinder Delete WaitForFirstConsumer true 46h standard-csi(default) cinder.csi.openstack.org Delete WaitForFirstConsumer true 46h- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 可选: 您可以定义一个新的 PVC 而无需指定存储类: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 没有指定特定存储类的 PVC 会使用默认存储类自动置备。 
- 可选: 配置了新文件后,在集群中创建该文件: - oc create -f cinder-claim.yaml - $ oc create -f cinder-claim.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow