8.3. 定义存储类
StorageClass 对象目前是一个全局范围的对象,必须由 cluster-admin 或 storage-admin 用户创建。
根据使用的平台,Cluster Storage Operator 可能会安装一个默认的存储类。此存储类由 Operator 拥有和控制。不能在定义注解和标签之外将其删除或修改。如果需要实现不同的行为,则必须定义自定义存储类。
以下小节描述了 StorageClass 对象的基本定义,以及每个支持的插件类型的具体示例。
8.3.1. 基本 StorageClass 对象定义 复制链接链接已复制到粘贴板!
以下资源显示了用来配置存储类的参数和默认值。这个示例使用 AWS ElasticBlockStore (EBS) 对象定义。
StorageClass 定义示例
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: <storage-class-name>
annotations:
storageclass.kubernetes.io/is-default-class: 'true'
...
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
...
8.3.2. 存储类注解 复制链接链接已复制到粘贴板!
要将存储类设置为集群范围的默认值,请在存储类元数据中添加以下注解:
storageclass.kubernetes.io/is-default-class: "true"
例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
storageclass.kubernetes.io/is-default-class: "true"
...
这允许任何没有指定特定存储类的持久性卷声明(PVC)通过默认存储类自动置备。但是,您的集群可以有多个存储类,但只有其中一个是默认存储类。
beta 注解 storageclass.beta.kubernetes.io/is-default-class 当前仍然可用,但将在以后的版本中被删除。
要设置存储类描述,请在存储类元数据中添加以下注解:
kubernetes.io/description: My Storage Class Description
例如:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
annotations:
kubernetes.io/description: My Storage Class Description
...
8.3.3. AWS Elastic Block Store (EBS) 对象定义 复制链接链接已复制到粘贴板!
aws-ebs-storageclass.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: <storage-class-name>
provisioner: ebs.csi.aws.com
parameters:
type: io1
iopsPerGB: "10"
encrypted: "true"
kmsKeyId: keyvalue
fsType: ext4
8.3.4. GCE PersistentDisk (gcePD) 对象定义 复制链接链接已复制到粘贴板!
gce-pd-storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: <storage-class-name>
provisioner: kubernetes.io/gce-pd
parameters:
type: pd-ssd
replication-type: none
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
reclaimPolicy: Delete