云容器引擎 CCE-存储类StorageClass:自定义StorageClass

时间:2023-11-01 16:25:55

自定义StorageClass

自定义高I/O类型StorageClass,使用YAML描述如下,这里取名为csi-disk-sas,指定云硬盘类型为SAS,即高I/O

apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: csi-disk-sas                          # 高IO StorageClass名字,用户可自定义parameters:  csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io  csi.storage.k8s.io/fstype: ext4  everest.io/disk-volume-type: SAS            # 云硬盘高I/O类型,用户不可自定义  everest.io/passthrough: "true"provisioner: everest-csi-provisionerreclaimPolicy: DeletevolumeBindingMode: ImmediateallowVolumeExpansion: true                    # true表示允许扩容

超高I/O类型StorageClass,这里取名为csi-disk-ssd,指定云硬盘类型为SSD,即超高I/O

apiVersion: storage.k8s.io/v1kind: StorageClassmetadata:  name: csi-disk-ssd                       # 超高I/O StorageClass名字,用户可自定义parameters:  csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io  csi.storage.k8s.io/fstype: ext4  everest.io/disk-volume-type: SSD         # 云硬盘超高I/O类型,用户不可自定义  everest.io/passthrough: "true"provisioner: everest-csi-provisionerreclaimPolicy: DeletevolumeBindingMode: ImmediateallowVolumeExpansion: true

reclaimPolicy:底层云存储的回收策略,支持Delete、Retain回收策略。

  • Delete:删除PVC,PV资源与云硬盘均被删除。
  • Retain:删除PVC,PV资源与底层存储资源均不会被删除,需要手动删除回收。PVC删除后PV资源状态为“已释放(Released)”,不能直接再次被PVC绑定使用。

此处设置的回收策略对SFS Turbo类型的存储无影响,因此删除集群或删除PVC时不会回收包周期的SFS Turbo资源。

如果数据安全性要求较高,建议使用Retain以免误删数据。

定义完之后,使用kubectl create命令创建。

# kubectl create -f sas.yamlstorageclass.storage.k8s.io/csi-disk-sas created# kubectl create -f ssd.yamlstorageclass.storage.k8s.io/csi-disk-ssd created

再次查询StorageClass,回显如下,可以看到多了两个类型的StorageClass。

# kubectl get scNAME                PROVISIONER                     AGEcsi-disk            everest-csi-provisioner         17dcsi-disk-sas        everest-csi-provisioner         2m28scsi-disk-ssd        everest-csi-provisioner         16scsi-disk-topology   everest-csi-provisioner         17dcsi-nas             everest-csi-provisioner         17dcsi-obs             everest-csi-provisioner         17dcsi-sfsturbo        everest-csi-provisioner         17d

其他类型存储自定义方法类似,可以使用 kubectl 获取YAML,在YAML基础上根据需要修改。

  • 文件存储
    # kubectl get sc csi-nas -oyamlkind: StorageClassapiVersion: storage.k8s.io/v1metadata:  name: csi-nasprovisioner: everest-csi-provisionerparameters:  csi.storage.k8s.io/csi-driver-name: nas.csi.everest.io  csi.storage.k8s.io/fstype: nfs  everest.io/share-access-level: rw  everest.io/share-access-to: 5e3864c6-e78d-4d00-b6fd-de09d432c632   # 集群所在VPC ID  everest.io/share-is-public: 'false'  everest.io/zone: xxxxx          # 可用区reclaimPolicy: DeleteallowVolumeExpansion: truevolumeBindingMode: Immediate
  • 对象存储
    # kubectl get sc csi-obs -oyamlkind: StorageClassapiVersion: storage.k8s.io/v1metadata:  name: csi-obsprovisioner: everest-csi-provisionerparameters:  csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io  csi.storage.k8s.io/fstype: s3fs           # 对象存储文件类型,s3fs是对象桶,obsfs是并行文件系统  everest.io/obs-volume-type: STANDARD      # OBS桶的存储类别reclaimPolicy: DeletevolumeBindingMode: Immediate
support.huaweicloud.com/usermanual-cce/cce_01_0380.html