Kubernetes StorageClasses
Use StorageClasses for dynamic provisioning and learn how provisioners, reclaim policies, and volume binding modes affect storage behavior.
What Does a StorageClass Do?
A StorageClass defines how Kubernetes should dynamically provision storage when a PVC asks for it.
Without a StorageClass, you may need to create PVs manually. With one, the cluster can often provision storage automatically.
Key Fields
| Field | Meaning |
|---|---|
provisioner | Plugin or driver that creates storage |
reclaimPolicy | What happens after release |
volumeBindingMode | When binding and provisioning happen |
Full YAML Example
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-ssd
annotations:
storageclass.kubernetes.io/is-default-class: "true"
provisioner: ebs.csi.aws.com
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp3
Why WaitForFirstConsumer Matters
This mode delays provisioning until Kubernetes knows where the pod will run. That can help with topology-aware storage decisions.
Cloud Examples
| Cloud | Example provisioner idea |
|---|---|
| AWS | EBS CSI driver |
| GCP | Persistent Disk CSI driver |
List StorageClasses
kubectl get storageclass
Default StorageClass
Clusters can mark one StorageClass as default. Then a PVC that does not name a class can still be dynamically provisioned.
Think of a StorageClass as a storage policy template. It says what kind of disk to create and how it should behave, without forcing every app team to know the infrastructure details.
Main Benefit
What is the main benefit of a StorageClass?
Default Meaning
What does marking a StorageClass as default usually do?