
# 自定义StorageClass
#### 应用现状
CCE中使用存储时，最常见的方法是创建PVC时通过指定StorageClassName定义要创建存储的类型，如下所示，使用PVC申请一个SAS（高I/O）类型云硬盘/块存储。
```
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: pvc-evs-example
  namespace: default
  annotations:
    everest.io/disk-volume-type: SAS
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
  storageClassName: csi-disk
```
可以看到在CCE中如果需要指定云硬盘的类型，是通过everest.io/disk-volume-type: SAS字段指定，这里SAS是云硬盘的类型，代表高I/O，还有SSD（超高I/O）可以指定。
这种写法在如下几种场景下存在问题：
- 部分用户觉得使用everest.io/disk-volume-type指定云硬盘类型比较繁琐，希望只通过StorageClassName指定。
- 部分用户是从自建Kubernetes或其他Kubernetes服务切换到CCE，已经写了很多应用的YAML文件，这些YAML文件中通过不同StorageClassName指定不同类型存储，迁移到CCE上时，使用存储就需要修改大量YAML文件或Helm Chart包，这非常繁琐且容易出错。
- 部分用户希望能够设置默认的StorageClassName，所有应用都使用默认存储类型，在YAML中不用指定StorageClassName也能按创建默认类型存储。
 
#### 解决方案
本文介绍在CCE中自定义StorageClass的方法，并介绍设置默认StorageClass的方法，通过不同StorageClassName指定不同类型存储。
- 对于第一个问题：可以将SAS、SSD类型云硬盘分别定义一个StorageClass，比如定义一个名为csi-disk-sas的StorageClass，这个StorageClass创建SAS类型的存储，则前后使用的差异如下图所示，编写YAML时只需要指定StorageClassName，符合特定用户的使用习惯。 ![](https://support.huaweicloud.com/bestpractice-cce/zh-cn_image_0000001102275444.png "点击放大")
  
- 对于第二个问题：可以定义与用户现有YAML中相同名称的StorageClass，这样可以省去修改YAML中StorageClassName的工作。
- 对于第三个问题：可以设置默认的StorageClass，则YAML中无需指定StorageClassName也能创建存储，按如下写法即可。
  ```
  apiVersion: v1
  kind: PersistentVolumeClaim
  metadata:
    name: pvc-evs-example
    namespace: default
  spec:
    accessModes:
    - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
  ```
  
 
#### 通过YAML创建StorageClass
目前CCE默认提供csi-disk、csi-nas、csi-obs等StorageClass，在声明PVC时使用对应StorageClassName，就可以自动创建对应类型PV，并自动创建底层的存储资源。
执行如下kubectl命令即可查询CCE提供的默认StorageClass。您可以使用CCE提供的CSI插件自定义创建StorageClass。
```
# kubectl get sc
NAME                PROVISIONER                     AGE
csi-disk            everest-csi-provisioner         17d          # 云硬盘
csi-disk-topology   everest-csi-provisioner         17d          # 延迟创建的云硬盘
csi-nas             everest-csi-provisioner         17d          # 文件存储 1.0
csi-sfs             everest-csi-provisioner         17d          # 通用文件系统（原SFS 3.0 容量型）
csi-obs             everest-csi-provisioner         17d          # 对象存储
csi-sfsturbo        everest-csi-provisioner         17d          # 极速文件存储
csi-local           everest-csi-provisioner         17d          # 本地持久卷
csi-local-topology  everest-csi-provisioner         17d          # 延迟创建的本地持久卷
csi-disk-dss        everest-csi-provisioner         2d21h        # 专属存储
```
每个StorageClass都包含了动态制备PersistentVolume时会使用到的默认参数。如以下云硬盘存储类的示例：
```
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: csi-disk
provisioner: everest-csi-provisioner
parameters:
  csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io
  csi.storage.k8s.io/fstype: ext4
  everest.io/disk-volume-type: SAS
  everest.io/passthrough: 'true'
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
```
表1关键参数说明 
| 参数                   | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
|:---|:---|
| provisioner          | 存储资源提供商，CCE均由everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| parameters           | 存储参数，不同类型的存储支持的参数不同。详情请参见[表2]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| reclaimPolicy        | 用来指定创建PV的persistentVolumeReclaimPolicy字段值，支持Delete和Retain。如果StorageClass 对象被创建时没有指定reclaimPolicy，它将默认为Delete。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，其中PV状态被设置为已释放，继续手动删除PV不会删除底层存储资源，若希望该PV还能被PVC绑定，需去除PV上与原PVC绑定的相关信息。   |
| allowVolumeExpansion | 定义由此存储类创建的PV是否支持动态扩容，默认为false。是否能动态扩容是由底层存储插件来实现的，这里只是一个开关。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| volumeBindingMode    | 表示卷绑定模式，即动态创建PV的时间，分为立即创建和延迟创建。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                                                                       |
| mountOptions         | 该字段需要底层存储支持，如果不支持挂载选项，却指定了挂载选项，会导致创建PV操作失败。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   
 表2parameters参数说明 
| 存储类型   | 参数                                 | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
|:---|:---|:---|:---|
| 云硬盘    | 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  - SSD：超高I/O  - GPSSD：通用型SSD  - ESSD：极速型SSD  - GPSSD2：通用型SSD v2，Everest版本为2.4.4及以上支持使用，使用时需同时指定everest.io/disk-iops和everest.io/disk-throughput注解。  - ESSD2：极速型SSD v2，Everest版本为2.4.4及以上支持使用，使用时需指定everest.io/disk-iops注解。   |
| 云硬盘    | everest.io/passthrough             | 是    | 参数取值固定为"true"，表示云硬盘的设备类型为SCSI类型。不允许设置为其他值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 云硬盘    | everest.io/disk-iops               | 否    | IOPS值由用户预配置，仅使用通用型SSD v2和极速型SSD v2类型的云硬盘支持设置。 - 通用型SSD v2类型的IOPS范围为3000\~128000，最高可配置 500\*容量（GiB）。 选择通用型SSD V2，当IOPS大于3000时会收取额外IOPS费用，详情请参见[价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/evs)。   - 极速型SSD v2类型的IOPS范围为100\~256000，最高可配置 1000\*容量（GiB）。 选择极速型SSD V2，使用IOPS会收取额外IOPS费用，详情请参见[价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/evs)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 云硬盘    | everest.io/disk-throughput         | 否    | 吞吐量由用户预配置，仅使用通用型SSD v2类型的云硬盘支持设置。 范围为125\~1000MiB/s，最高可配置 IOPS/4。 吞吐量大于125MiB/s时会收取额外吞吐量费用，详情请参见[价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/evs)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 文件存储   | 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         | 是    | 集群所在VPC ID。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 文件存储   | everest.io/share-is-public         | 否    | 参数取值固定为"false"，表示文件共享为私人可见。 使用通用文件系统（原SFS 3.0 容量型）时无需填写。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 文件存储   | everest.io/sfs-version             | 否    | 仅使用通用文件系统（原SFS 3.0 容量型）时需要填写，固定值为"sfs3.0"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| 极速文件存储 | csi.storage.k8s.io/csi-driver-name | 是    | 驱动类型，使用极速文件存储类型时，参数取值固定为"sfsturbo.csi.everest.io"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| 极速文件存储 | csi.storage.k8s.io/fstype          | 是    | 使用极速文件存储时，支持的参数值为"nfs"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| 极速文件存储 | everest.io/share-expand-type       | 否    | 扩展类型，默认值为"bandwidth"，表示增强型的文件系统。该字段不起作用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| 极速文件存储 | everest.io/share-source            | 是    | 参数取值固定为"sfs-turbo"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
| 极速文件存储 | everest.io/share-volume-type       | 否    | 极速文件存储类型，默认值为"STANDARD"，表示标准型和标准型增强版。该字段不起作用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| 极速文件存储 | everest.io/reclaim-policy          | 否    | 删除PVC时是否保留子目录，该参数需与PV回收策略（reclaimPolicy）配合使用。仅当PV回收策略为"Delete"时生效，取值如下： - retain-volume-only：表示删除PVC时，PV会被删除，但**PV关联的子目录会被保留**。  - delete：表示删除PVC，**PV及其关联的子目录均会被删除** 。 说明： 删除子目录时，仅删除PVC参数中设置的子目录绝对路径，不会级联删除上层目录。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 对象存储   | csi.storage.k8s.io/csi-driver-name | 是    | 驱动类型，使用对象存储类型时，参数取值固定为"obs.csi.everest.io"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 对象存储   | csi.storage.k8s.io/fstype          | 是    | 实例类型，支持的参数值为"s3fs"和"obsfs"。 - obsfs：并行文件系统。  - s3fs：对象桶。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 对象存储   | everest.io/obs-volume-type         | 是    | 对象存储类型。 - fsType设置为s3fs时，支持STANDARD（标准桶）、WARM（低频访问桶）。  - fsType设置为obsfs时，该字段不起作用。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| 本地持久卷  | csi.storage.k8s.io/csi-driver-name | 是    | 驱动类型，使用本地持久卷类型时，参数取值固定为"local.csi.everest.io"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| 本地持久卷  | csi.storage.k8s.io/fstype          | 是    | 表示文件系统类型，仅支持设置为"ext4"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
| 本地持久卷  | volume-type                        | 是    | 表示卷类型，仅支持设置为"persistent"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
| 专属存储   | 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  - SSD：超高I/O                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| 专属存储   | everest.io/passthrough             | 是    | 参数取值固定为"true"，表示专属存储的设备类型为SCSI类型，不允许设置为其他值。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| 专属存储   | everest.io/resource-type           | 是    | 表示资源类型，专属存储固定为"dss"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   
#### 自定义StorageClass
自定义高I/O类型StorageClass，使用YAML描述如下，这里取名为csi-disk-sas，指定云硬盘类型为SAS，即高I/O。
```
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  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-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true                    # true表示允许扩容
```
超高I/O类型StorageClass，这里取名为csi-disk-ssd，指定云硬盘类型为SSD，即超高I/O。
```
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  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-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
```
reclaimPolicy：底层云存储的回收策略，支持Delete、Retain回收策略。
- **Delete**：删除PVC，PV资源与云硬盘均被删除。
- **Retain**：删除PVC，PV资源与底层存储资源均不会被删除，需要手动删除回收。PVC删除后PV资源状态为"已释放（Released）"，不能直接再次被PVC绑定使用。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
此处设置的回收策略对SFS Turbo类型的存储无影响，因此删除集群或删除PVC时不会回收SFS Turbo资源。
如果数据安全性要求较高，建议使用**Retain**以免误删数据。
定义完之后，使用kubectl create命令创建。
```
# kubectl create -f sas.yaml
storageclass.storage.k8s.io/csi-disk-sas created
# kubectl create -f ssd.yaml
storageclass.storage.k8s.io/csi-disk-ssd created
```
再次查询StorageClass，回显如下，可以看到多了两个类型的StorageClass。
```
# kubectl get sc
NAME                PROVISIONER                     AGE
csi-disk            everest-csi-provisioner         17d
csi-disk-sas        everest-csi-provisioner         2m28s
csi-disk-ssd        everest-csi-provisioner         16s
csi-disk-topology   everest-csi-provisioner         17d
csi-nas             everest-csi-provisioner         17d
csi-obs             everest-csi-provisioner         17d
csi-sfsturbo        everest-csi-provisioner         17d
```
其他类型存储自定义方法类似，可以使用 kubectl 获取YAML，在YAML基础上根据需要修改。
- 文件存储
  ```
  # kubectl get sc csi-nas -oyaml
  kind: StorageClass
  apiVersion: storage.k8s.io/v1
  metadata:
    name: csi-nas
  provisioner: everest-csi-provisioner
  parameters:
    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: Delete
  allowVolumeExpansion: true
  volumeBindingMode: Immediate
  ```
  
- 对象存储
  ```
  # kubectl get sc csi-obs -oyaml
  kind: StorageClass
  apiVersion: storage.k8s.io/v1
  metadata:
    name: csi-obs
  provisioner: everest-csi-provisioner
  parameters:
    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: Delete
  volumeBindingMode: Immediate
  ```
  
 
#### 指定StorageClass的企业项目
CCE支持使用存储类创建云硬盘和对象存储类型PVC时指定企业项目，将创建的存储资源（云硬盘和对象存储）归属于指定的企业项目下，**企业项目可选为集群所属的企业项目或default企业项目**。
若不指定企业项目，则创建的存储资源默认使用存储类StorageClass中指定的企业项目，CCE提供的 csi-disk 和 csi-obs 存储类，所创建的存储资源属于default企业项目。
如果您希望通过StorageClass创建的存储资源能与集群在同一个企业项目，则可以自定义StorageClass，并指定企业项目ID，如下所示。
![](https://support.huaweicloud.com/bestpractice-cce/public_sys-resources/note_3.0-zh-cn.png)
该功能需要everest插件升级到1.2.33及以上版本。
```
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: csi-disk-epid      # 自定义名称
provisioner: everest-csi-provisioner
parameters:
  csi.storage.k8s.io/csi-driver-name: disk.csi.everest.io
  csi.storage.k8s.io/fstype: ext4
  everest.io/disk-volume-type: SAS
  everest.io/enterprise-project-id: 86bfc701-9d9e-4871-a318-6385aa368183  # 指定企业项目id
  everest.io/passthrough: 'true'
reclaimPolicy: Delete
allowVolumeExpansion: true
volumeBindingMode: Immediate
```
#### 指定默认StorageClass
您还可以指定某个StorageClass作为默认StorageClass，这样在创建PVC时不指定StorageClassName就会使用默认StorageClass创建。
例如将csi-disk-ssd指定为默认StorageClass，则可以按如下方式设置。
```
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: csi-disk-ssd
  annotations:
    storageclass.kubernetes.io/is-default-class: "true"   # 指定集群中默认的StorageClass，一个集群中只能有一个默认的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
  everest.io/passthrough: "true"
provisioner: everest-csi-provisioner
reclaimPolicy: Delete
volumeBindingMode: Immediate
allowVolumeExpansion: true
```
先删除之前创建的csi-disk-ssd，再使用kubectl create命令重新创建，然后再查询StorageClass，显示如下。
```
# kubectl delete sc csi-disk-ssd
storageclass.storage.k8s.io "csi-disk-ssd" deleted
# kubectl create -f ssd.yaml
storageclass.storage.k8s.io/csi-disk-ssd created
# kubectl get sc
NAME                     PROVISIONER                     AGE
csi-disk                 everest-csi-provisioner         17d
csi-disk-sas             everest-csi-provisioner         114m
csi-disk-ssd (default)   everest-csi-provisioner         9s
csi-disk-topology        everest-csi-provisioner         17d
csi-nas                  everest-csi-provisioner         17d
csi-obs                  everest-csi-provisioner         17d
csi-sfsturbo             everest-csi-provisioner         17d
```
#### 配置验证
在创建PVC时，您可以选择以下方式：
- **指定StorageClass**：显式指定所需的StorageClass。
- **不指定StorageClass**：直接使用集群中配置的默认StorageClass。
以下将分别对这两种配置方式的创建结果进行验证。
验证"自定义StorageClass"中定义的"csi-disk-sas"是否可以创建PVC
1. 执行以下命令，创建一个名为sas-disk.yaml的Yaml文件，名称可自定义。该文件将使用"csi-disk-sas"创建PVC。
   ```
   vim sas-disk.yaml
   ```
   文件内容如下：
   ```
   apiVersion: v1
   kind: PersistentVolumeClaim
   metadata:
     name: sas-disk
   spec:
     accessModes:
     - ReadWriteOnce
     resources:
       requests:
         storage: 10Gi
     storageClassName: csi-disk-sas
   ```
   
2. 执行以下命令，创建PVC。
   ```
   kubectl create -f sas-disk.yaml
   ```
   回显结果如下：
   ```
   persistentvolumeclaim/sas-disk created
   ```
   
3. 执行以下命令，查看PVC相关信息。
   ```
   kubectl get pvc
   ```
   回显结果如下，则说明该PVC已成功绑定PV，且使用的StorageClass为"csi-disk-sas"。
   ```
   NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
   sas-disk   Bound    pvc-6e2f37f9-7346-4419-82f7-b42e79f7964c   10Gi       RWO            csi-disk-sas   24s
   ```
   
4. 执行以下命令，查看PV相关信息。
   ```
   kubectl get pv
   ```
   回显结果如下，则说明PV已自动创建。
   ```
   NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                     STORAGECLASS   REASON   AGE
   pvc-6e2f37f9-7346-4419-82f7-b42e79f7964c   10Gi       RWO            Delete           Bound       default/sas-disk          csi-disk-sas            30s
   ```
   综上所述，则说明自定义的StorageClass"csi-disk-sas"可以正常使用。
   
 
验证不指定StorageClass是否可以创建PVC
1. 执行以下命令，创建一个名为sas-disk.yaml的Yaml文件，名称可自定义。该文件创建PVC时，未指定StorageClass。
   ```
   vim sas-disk.yaml
   ```
   文件内容如下：
   ```
   apiVersion: v1
   kind: PersistentVolumeClaim
   metadata:
     name:  ssd-disk
   spec:
     accessModes:
     - ReadWriteOnce
     resources:
       requests:
         storage: 10Gi
   ```
   
2. 执行以下命令，创建PVC。
   ```
   kubectl create -f sas-disk.yaml
   ```
   回显结果如下：
   ```
   persistentvolumeclaim/sas-disk created
   ```
   
3. 执行以下命令，查看PVC相关信息。
   ```
   kubectl get pvc
   ```
   回显结果如下，说明该PVC已成功绑定PV，且使用的StorageClass为云硬盘的默认StorageClass。
   ```
   NAME       STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
   sas-disk   Bound    pvc-6e2f37f9-7346-4419-82f7-b42e79f7964c   10Gi       RWO            csi-disk-sas   16m
   ssd-disk   Bound    pvc-4d2b059c-0d6c-44af-9994-f74d01c78731   10Gi       RWO            csi-disk-ssd   10s
   ```
   
4. 执行以下命令，查看PV相关信息。
   ```
   kubectl get pv
   ```
   回显结果如下，则说明PV已自动创建，且StorageClass为云硬盘的默认StorageClass。
   ```
   NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM                     STORAGECLASS   REASON   AGE
   pvc-4d2b059c-0d6c-44af-9994-f74d01c78731   10Gi       RWO            Delete           Bound       default/ssd-disk          csi-disk-ssd            15s
   pvc-6e2f37f9-7346-4419-82f7-b42e79f7964c   10Gi       RWO            Delete           Bound       default/sas-disk          csi-disk-sas            17m
   ```
   综上所述，则说明未指定StorageClass时，系统将自动使用默认StorageClass。
   
 
