Storage Class 是 Kubernetes 中定义不同存储类型的一种方法。它为管理员提供了一种描述他们提供的存储的方式,并允许用户以抽象的方式使用这些存储。Storage Classes 可以定义特定的存储提供者(如 AWS EBS、Azure Disk、GCE Persistent Disk 等)、预配置的策略(如备份策略、加密)、IO性能、访问模式等。
使用场景:
ReadWriteOnce
或 ReadOnlyMany
),确保 Storage Class 满足特定的应用需求。以下是一个如何定义 Storage Class 并使用它来创建 Persistent Volume Claim 的示例。
Storage Class 定义示例:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-storage
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp2
fsType: ext4
iopsPerGB: "10"
reclaimPolicy: Retain
allowVolumeExpansion: true
volumeBindingMode: Immediate
在这个示例中,我们定义了一个名为 fast-storage
的 Storage Class,它使用 AWS EBS 作为存储提供者,选择了 gp2
类型,文件系统为 ext4
,并且每个 GB 分配了 10 IOPS。回收策略设置为 Retain
,表示当 PVC 被删除时,PV 不会被自动删除。同时允许卷扩展,并且在 PVC 创建时会立即进行卷绑定。
Persistent Volume Claim 使用 Storage Class 示例:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: fast-storage-claim
spec:
accessModes:
- ReadWriteOnce
storageClassName: fast-storage
resources:
requests:
storage: 50Gi
这个 PVC fast-storage-claim
请求使用 fast-storage
Storage Class 并申请 50Gi 的存储空间。当这个 PVC 被提交给 Kubernetes API 时,根据 fast-storage
Storage Class 的定义,Kubernetes 会自动在 AWS 上创建一个 50Gi 的 gp2 EBS 卷。
这样,应用程序就可以利用这个 PVC 获得一个快速的、支持自动扩展的持久存储,无需关心底层存储的具体实现细节。