# 自定义存储类（StorageClass）
StorageClass是Kubernetes中用于定义存储类别的资源对象，提供动态分配存储卷的能力。通过设置不同的参数，StorageClass能够根据业务需求自动供应和调整存储资源。在PVC中指定StorageClassName字段后，若在集群中未找到匹配的PV，Kubernetes将根据所引用的StorageClass调用对应的Provisioner动态创建符合要求的PV及底层存储资源，从而简化了手动创建和维护PV的流程。StorageClass中的参数作为默认配置项使用，**当PVC中存在与之冲突的配置时，以PVC中的设置为准**。
CCE集群中默认提供[默认StorageClass](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__table6727186529)供您使用，默认StorageClass不支持修改。如果CCE中提供的[默认StorageClass](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__table6727186529)无法满足业务需求，您可以自定义创建新的StorageClass，设置回收策略、绑定模式等参数，以方便后续使用。
#### 自定义存储类应用场景
以下列举了自定义StorageClass的常见应用场景，供您参考：
- **满足个性化需求，简化批量操作**：通过自定义回收策略（reclaimPolicy）、卷绑定模式（volumeBindingMode）等参数，您可以灵活应对不同业务场景，避免在批量创建PVC时重复配置相关参数，从而简化操作流程、提升管理效率。
- **支持平滑迁移，降低修改成本**：当用户从自建Kubernetes或其他云厂商的Kubernetes服务迁移至CCE时，可在CCE中创建一个名称与原环境一致的StorageClass。这样，应用YAML文件或Helm Chart中的storageClassName无需修改，有效避免手动变更大量配置带来的操作负担与出错风险。例如，若迁移前使用的存储类名称为disk-standard，则可复制CCE中的csi-disk存储类 YAML，将其名称改为disk-standard后重新创建，实现无缝衔接。
- **设置默认存储类** ：在创建StorageClass时，可以通过**metadata.annotations.storageclass.kubernetes.io/is-default-class**字段将其设置为默认存储类。设置后，用户在创建PVC时无需显式指定storageClassName，系统将自动选用该默认存储类，简化资源声明过程。
- **绑定企业项目，实现资源统一管理** ：在创建StorageClass时，可以通过**parameters.everest.io/enterprise-project-id字段**指定企业项目，实现底层存储资源与企业项目的绑定，便于后续的资源分类管理和成本核算。
 
#### 前提条件
已安装CCE容器存储（Everest）插件，且插件处于运行中状态，具体操作步骤请参见[CCE容器存储（Everest）](https://support.huaweicloud.com/usermanual-cce/cce_10_0066.html)。
#### 创建StorageClass
CCE支持两种方式创建StorageClass，即控制台和kubectl命令行方式。控制台方式提供StorageClass基础配置，配置简单；kubectl命令行方式更加灵活，支持配置更多参数，请结合需求进行选择。
 #### StorageClass基础配置
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏选择"存储"，在右侧选择"存储类"页签。单击右上角"创建存储类"，在弹出的窗口中填写存储类参数。 
   图1创建存储类   
   ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002370263414.png "点击放大")
   
   | 参数   | 描述                                                                                                                                                                                                                                                                                                                                                                                                          |
   |:---|:---|
   | 存储类类型 | 选择底层存储类型。                                                                                                                                                                                                                                                                                                                                                                                                    |
   | 名称    | 输入存储类的名称，同一集群的存储类名称需唯一。                                                                                                                                                                                                                                                                                                                                                                                      |
   | 回收策略  | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | 绑定模式 | 动态创建PV的时间，分为立即创建和延迟创建。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。本地持久卷类型不支持设置为Immediate。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。对象存储、文件存储、极速文件存储类型不支持设置为WaitForFirstConsumer。                     |
      
   
   
3. 单击"创建"。您可以在"存储类"页签下查看已经创建的存储类及相关信息。
 
 #### StorageClass高级配置
您可根据业务需求配置更多存储参数，创建符合场景要求的StorageClass资源。
**云硬盘存储**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim evs-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-disk-evs
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   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: GPSSD2
     everest.io/enterprise-project-id: xxx-xxx-xxx-xxx-xxx  # 指定企业项目id，仅限于已开通企业项目的账号使用
     everest.io/passthrough: 'true'
     everest.io/disk-iops: '3000'  # 仅通用型SSD v2和极速型SSD v2类型的云硬盘支持设置
     everest.io/disk-throughput: '100'  # 仅通用型SSD v2类型的云硬盘支持设置
   reclaimPolicy: Delete
   allowVolumeExpansion: true
   volumeBindingMode: Immediate
   mountOptions: []  # 非必选项，仅部分存储类型支持，如果存储类型不支持，请删除该参数
   ```
   表1参数说明 
   | 参数                                                             | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                    | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | parameters                                                   | 用于定义存储类的具体配置参数，详情请参见[表2]。                                                                                                                                                                                                                                                                                                                                                                                                                                     |
   | reclaimPolicy                                                  | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | allowVolumeExpansion                                         | 表示由该存储类创建的PV是否支持动态扩容，即是否允许通过修改PVC的方式动态扩容其绑定的存储卷，默认为false。 该参数仅为开启动态扩容的开关，动态扩容能否生效取决于底层存储插件的支持情况。若底层存储插件不支持，即使该参数设置为true，仍无法实现扩容。**目前仅云硬盘、SFS Turbo(无子目录或子目录有限额)支持动态扩容**。                                                                                                                                                                                                                                                                                       |
   | volumeBindingMode                                               | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                                          |
   | mountOptions                                                   | 用于指定挂载卷时的参数，控制挂载行为（如只读、缓冲策略等）。云硬盘支持设置挂载参数，具体请参见[设置云硬盘存储挂载参数](https://support.huaweicloud.com/usermanual-cce/cce_10_1012.html)。                                                                                                                                                                                                                                                                                                                                                                |
      
    表2parameters参数说明 
   | 参数                                 | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
   |:---|:---|:---|
   | csi.storage.k8s.io/csi-driver-name | 是  | 表示驱动类型。使用云硬盘类型时，参数取值固定为"disk.csi.everest.io"。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
   | csi.storage.k8s.io/fstype         | 是   | 表示CSI驱动创建存储卷时所使用文件系统类型。使用云硬盘时，支持的参数值为"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/enterprise-project-id | 否 | 用于指定底层存储资源的企业项目ID，仅限于已开通企业项目的企业客户账号使用。建议设置为集群所属的企业项目或default企业项目**，** 以便资源统一管理。了解更多企业项目相关信息，请查看[企业管理](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0123692049.html)。 **获取方法**：在企业项目管理控制台，单击要对接的企业项目名称，复制企业项目ID值即可。 说明： 该功能需要everest插件升级到1.2.33及以上版本。                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | 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)。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f evs-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-disk-evs created
   ```
   
4. 执行以下命令，可以查看csi-disk-evs的详细信息。
   ```
   kubectl describe sc csi-disk-evs
   ```
   回显结果如下：
   ```
   Name:            csi-disk-evs
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{},"name":"csi-disk-evs"},......
   ```
   
 
**文件存储**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim sfs-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-nas-sfs3
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   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: xxx-xxx-xxx-xxx-xxx
     everest.io/sfs-version: 'sfs3.0'  # 仅使用通用文件系统（原SFS 3.0 容量型）时需要填写，固定值为“sfs3.0”。
   reclaimPolicy: Delete
   allowVolumeExpansion: false
   volumeBindingMode: Immediate
   mountOptions: []  # 非必选项，仅部分存储类型支持，如果存储类型不支持，请删除该参数
   ```
   表3参数说明 
   | 参数                                                               | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                       | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   | parameters                                                       | 用于定义存储类的具体配置参数，详情请参见[表4]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
   | reclaimPolicy                                                      | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | allowVolumeExpansion                                             | 表示由该存储类创建的PV是否支持动态扩容，即是否允许通过修改PVC的方式动态扩容其绑定的存储卷，默认为false。 该参数仅为开启动态扩容的开关，动态扩容能否生效取决于底层存储插件的支持情况。若底层存储插件不支持，即使该参数设置为true，仍无法实现扩容。**目前仅云硬盘、SFS Turbo(无子目录或子目录有限额)支持动态扩容**。                                                                                                                                                                                                                                                                                                                                       |
   | volumeBindingMode                                                 | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。**文件存储仅支持** **Immediate** **模式**。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                               |
   | mountOptions                                                      | 用于指定挂载卷时的参数，控制挂载行为（如只读、缓冲策略等）。文件存储支持设置挂载参数，具体请参见[设置文件存储挂载参数](https://support.huaweicloud.com/usermanual-cce/cce_10_0337.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                          |
      
    表4parameters参数说明 
   | 参数                               | 是否必选 | 描述                                                                                              |
   |:---|:---|:---|
   | 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。 **获取方法**：进入集群概览页，在"网络信息 \> VPC"中，将鼠标悬浮于对应VPC上，复制VPC ID。 |
   | everest.io/share-is-public         | 否       | 参数取值固定为"false"，表示文件共享为私人可见。 使用通用文件系统（原SFS 3.0 容量型）时无需填写。               |
   | everest.io/sfs-version           | 否    | 仅使用通用文件系统（原SFS 3.0 容量型）时需要填写，固定值为"sfs3.0"。                                                       |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f sfs-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-nas-sfs3 created
   ```
   
4. 执行以下命令，可以查看csi-nas-sfs3的详细信息。
   ```
   kubectl describe sc csi-nas-sfs3
   ```
   回显结果如下：
   ```
   Name:            csi-nas-sfs3
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":true,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"false"},...
   ```
   
 
**极速文件存储**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim sfsturbo-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-sfsturbo-test1
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   provisioner: everest-csi-provisioner
   parameters:
     csi.storage.k8s.io/csi-driver-name: sfsturbo.csi.everest.io
     csi.storage.k8s.io/fstype: nfs
     everest.io/reclaim-policy: retain-volume-only
     everest.io/share-expand-type: bandwidth
     everest.io/share-source: sfs-turbo
     everest.io/share-volume-type: STANDARD
   reclaimPolicy: Delete
   allowVolumeExpansion: true
   volumeBindingMode: Immediate
   ```
   表5参数说明 
   | 参数                                                                | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                       | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | parameters                                                         | 用于定义存储类的具体配置参数，详情请参见[表6]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
   | reclaimPolicy                                                      | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | allowVolumeExpansion                                             | 表示由该存储类创建的PV是否支持动态扩容，即是否允许通过修改PVC的方式动态扩容其绑定的存储卷，默认为false。 该参数仅为开启动态扩容的开关，动态扩容能否生效取决于底层存储插件的支持情况。若底层存储插件不支持，即使该参数设置为true，仍无法实现扩容。**目前仅云硬盘、SFS Turbo(无子目录或子目录有限额)支持动态扩容**。                                                                                                                                                                                                                                                                                                                                               |
   | volumeBindingMode                                                | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。**极速文件存储仅支持** **Immediate** **模式**。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                               |
      
    表6parameters参数说明 
   | 参数                                  | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                                                    |
   |:---|:---|:---|
   | 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时是否保留子目录，该参数reclaimPolicy配合使用。仅当PV回收策略为"Delete"时生效，取值如下： - retain-volume-only：表示删除PVC时，PV会被删除，但**PV关联的子目录会被保留**。  - delete：表示删除PVC，**PV及其关联的子目录均会被删除** 。 说明： 删除子目录时，仅删除PVC参数中设置的子目录绝对路径，不会级联删除上层目录。    |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f sfsturbo-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-sfsturbo-test1 created
   ```
   
4. 执行以下命令，可以查看csi-sfsturbo-test1的详细信息。
   ```
   kubectl describe sc csi-sfsturbo-test1
   ```
   回显结果如下：
   ```
   Name:            csi-sfsturbo-test1
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"allowVolumeExpansion":false,"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"false"},...
   ```
   
 
**对象存储**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim obs-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-obs-test1
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   provisioner: everest-csi-provisioner
   parameters:
     csi.storage.k8s.io/csi-driver-name: obs.csi.everest.io
     csi.storage.k8s.io/fstype: s3fs
     everest.io/obs-volume-type: STANDARD
     everest.io/enterprise-project-id: xxx-xxx-xxx-xxx-xxx  # 指定企业项目id，仅限于已开通企业项目的账号使用
   reclaimPolicy: Delete
   volumeBindingMode: Immediate
   mountOptions: []  # 非必选项，仅部分存储类型支持，如果存储类型不支持，请删除该参数
   ```
   表7参数说明 
   | 参数                                                                 | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                          | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | parameters                                                         | 用于定义存储类的具体配置参数，详情请参见[表8]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | reclaimPolicy                                                       | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | volumeBindingMode                                                  | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。**对象存储仅支持** **Immediate** **模式**。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                                 |
   | mountOptions                                                     | 用于指定挂载卷时的参数，控制挂载行为（如只读、缓冲策略等）。对象存储支持设置挂载参数，具体请参见[设置对象存储挂载参数](https://support.huaweicloud.com/usermanual-cce/cce_10_0631.html)。                                                                                                                                                                                                                                                                                                                                                                                                                                                    |
      
    表8parameters参数说明 
   | 参数                                | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                   |
   |:---|:---|:---|
   | 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时，该字段不起作用。                                                                                                                      |
   | everest.io/enterprise-project-id   | 否     | 用于指定底层存储资源的企业项目ID，仅限于已开通企业项目的企业客户账号使用。建议设置为集群所属的企业项目或default企业项目**，** 以便资源统一管理。了解更多企业项目相关信息，请查看[企业管理](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0123692049.html)。 **获取方法**：在企业项目管理控制台，单击要对接的企业项目名称，复制企业项目ID值即可。 说明： 该功能需要everest插件升级到1.2.33及以上版本。 |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f obs-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-obs-test1 created
   ```
   
4. 执行以下命令，可以查看csi-obs-test1的详细信息。
   ```
   kubectl describe sc csi-obs-test1
   ```
   回显结果如下：
   ```
   Name:            csi-obs-test1
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"false"},......
   ```
   
 
**专属存储**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim dss-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-disk-dsstest
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   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: SSD
     everest.io/passthrough: 'true'
     everest.io/resource-type: dss
     everest.io/enterprise-project-id: xxx-xxx-xxx-xxx-xxx  # 指定企业项目id，仅限于已开通企业项目的账号使用
   reclaimPolicy: Delete
   allowVolumeExpansion: false
   volumeBindingMode: Immediate
   ```
   表9参数说明 
   | 参数                                                             | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                     | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | parameters                                                         | 用于定义存储类的具体配置参数，详情请参见[表10]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
   | reclaimPolicy                                                    | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | allowVolumeExpansion                                              | 表示由该存储类创建的PV是否支持动态扩容，即是否允许通过修改PVC的方式动态扩容其绑定的存储卷，默认为false。 该参数仅为开启动态扩容的开关，动态扩容能否生效取决于底层存储插件的支持情况。若底层存储插件不支持，即使该参数设置为true，仍无法实现扩容。**目前仅云硬盘、SFS Turbo(无子目录或子目录有限额)支持动态扩容**。                                                                                                                                                                                                                                                                                                                                               |
   | volumeBindingMode                                                 | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                                              |
      
    表10parameters参数说明 
   | 参数                              | 是否必选 | 描述                                                                                                                                                                                                                                                                                                                                                                         |
   |:---|:---|:---|
   | 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"。                                                                                                                                                                                                                                                                                                                                                        |
   | everest.io/enterprise-project-id  | 否    | 用于指定底层存储资源的企业项目ID，仅限于已开通企业项目的企业客户账号使用。建议设置为集群所属的企业项目或default企业项目**，** 以便资源统一管理。了解更多企业项目相关信息，请查看[企业管理](https://support.huaweicloud.com/usermanual-em/zh-cn_topic_0123692049.html)。 **获取方法**：在企业项目管理控制台，单击要对接的企业项目名称，复制企业项目ID值即可。 说明： 该功能需要everest插件升级到1.2.33及以上版本。 |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f dss-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-disk-dsstest created
   ```
   
4. 执行以下命令，可以查看csi-disk-dsstest的详细信息。
   ```
   kubectl describe sc csi-disk-dsstest
   ```
   回显结果如下：
   ```
   Name:            csi-disk-dsstest
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"false"},...
   ```
   
 
**本地持久卷**
1. [通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 执行以下命令，创建StorageClass的YAML文件，文件名支持自定义。
   ```
   vim local-storageclass.yaml
   ```
   文件内容如下：
   ```
   kind: StorageClass
   apiVersion: storage.k8s.io/v1
   metadata:
     name: csi-local-test
     annotations:
       storageclass.kubernetes.io/is-default-class: "false"   # 非必选项，指定集群中默认的StorageClass，一个集群中只能有一个默认的StorageClass
   provisioner: everest-csi-provisioner
   parameters:
     csi.storage.k8s.io/csi-driver-name: local.csi.everest.io
     csi.storage.k8s.io/fstype: ext4
     volume-type: persistent
   reclaimPolicy: Delete
   volumeBindingMode: WaitForFirstConsumer
   ```
   表11参数说明 
   | 参数                                                              | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
   |:---|:---|
   | metadata.annotations.storageclass.kubernetes.io/is-default-class | 用于指定默认StorageClass，一个集群中建议只设置一个默认的StorageClass。如果存在多个默认StorageClass，CCE不会报错，但行为可能不确定。 - **true**：表示该StorageClass为默认StorageClass。创建PVC时，如果未显式指定StorageClassName，系统将自动使用默认StorageClass。  - **false或不设置该参数**：表示该StorageClass为非默认StorageClass。                                                                                           |
   | provisioner                                                    | 表示存储资源提供商。CCE均由Everest插件提供，此处只能填写everest-csi-provisioner。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
   | parameters                                                     | 用于定义存储类的具体配置参数，详情请参见[表12]。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
   | reclaimPolicy                                                  | 用于指定删除PVC时底层存储的回收策略，详情请参见[PV回收策略](https://support.huaweicloud.com/usermanual-cce/cce_10_0378.html#cce_10_0378__section19999142414413)。该参数未指定时，默认为**Delete**。 - **Delete**：存储卷声明PVC删除时，会将关联的底层存储资源删除，并同步移除PV资源，请谨慎使用。  - **Retain**：存储卷声明PVC删除时，PV和关联的底层存储资源均会保留，需要手动删除。   |
   | volumeBindingMode                                              | 表示卷绑定模式，即动态创建PV的时间，分为立即创建（Immediate）和延迟创建（WaitForFirstConsumer）。**本地持久卷仅支持** **WaitForFirstConsumer** **模式**。 - **Immediate**：PVC创建后，会立即创建底层存储资源及存储卷PV，并与PVC绑定。  - **WaitForFirstConsumer**：PVC创建后，不会立即与存储卷PV绑定，而是等需要挂载该PVC的Pod被调度后，再创建底层存储资源及存储卷PV，并与PVC绑定。                                                     |
      
    表12parameters参数说明 
   | 参数                                    | 是否必选  | 描述                                            |
   |:---|:---|:---|
   | csi.storage.k8s.io/csi-driver-name | 是  | 表示驱动类型，使用本地持久卷类型时，参数取值固定为"local.csi.everest.io"。 |
   | csi.storage.k8s.io/fstype          | 是 | 表示文件系统类型，仅支持设置为"ext4"。                          |
   | volume-type                          | 是    | 表示卷类型，仅支持设置为"persistent"。                       |
      
   
3. 执行以下命令，创建上述StorageClass。
   ```
   kubectl apply -f dss-storageclass.yaml
   ```
   回显结果如下：
   ```
   storageclass.storage.k8s.io/csi-local-test created
   ```
   
4. 执行以下命令，可以查看csi-local-test的详细信息。
   ```
   kubectl describe sc csi-local-test
   ```
   回显结果如下：
   ```
   Name:            csi-local-test
   IsDefaultClass:  No
   Annotations:     kubectl.kubernetes.io/last-applied-configuration={"apiVersion":"storage.k8s.io/v1","kind":"StorageClass","metadata":{"annotations":{"storageclass.kubernetes.io/is-default-class":"false"},...
   ```
   
 
#### 相关文档
在使用新的StorageClass时，用户只需在PVC的"storageClassName"字段中指定对应的StorageClass。**StorageClass中定义的参数将作为默认配置，若PVC中指定了与之冲突的参数，则以PVC中的设置为准。**
您可以参考以下文档使用StorageClass，以简化手动创建和维护PV的流程：
- 云硬盘：[通过动态存储卷使用云硬盘](https://support.huaweicloud.com/usermanual-cce/cce_10_0615.html)
- 文件存储：
  - [通过动态存储卷使用文件存储](https://support.huaweicloud.com/usermanual-cce/cce_10_0620.html)
  
  - [通过动态存储卷创建SFS子目录](https://support.huaweicloud.com/usermanual-cce/cce_10_0914.html)
   
- 极速文件存储：[通过动态存储卷创建SFS Turbo子目录（推荐）](https://support.huaweicloud.com/usermanual-cce/cce_10_0839.html)
- 对象存储：[通过动态存储卷使用对象存储](https://support.huaweicloud.com/usermanual-cce/cce_10_0630.html)
- 专属存储：[通过动态存储卷使用专属存储](https://support.huaweicloud.com/usermanual-cce/cce_10_0872.html)
- 本地持久卷：[通过动态存储卷使用本地持久卷](https://support.huaweicloud.com/usermanual-cce/cce_10_0634.html)
 
