Eine StorageClass beschreibt in Kubernetes eine Speicherklasse: Sie legt fest, wie und wo Speicher für PersistentVolumes bereitgestellt wird. Klassen unterscheiden etwa SSD, Netzspeicher oder Cloud-Disk. Weist ein PersistentVolumeClaim (PVC) eine Klasse zu, erzeugt Kubernetes das passende Volume automatisch – das nennt sich dynamische Provisionierung.
Aufbau einer StorageClass
Die wichtigsten Felder:
- provisioner: das Plugin, das Volumes erzeugt – etwa ein Cloud-Treiber oder ein CSI-Treiber.
- parameters: treiberspezifische Optionen wie Disk-Typ oder IOPS.
- reclaimPolicy:
Retainlässt Daten nach Löschung des Claims liegen,Deleteentfernt sie mit. - volumeBindingMode:
Immediateerstellt das Volume sofort,WaitForFirstConsumererst, wenn ein Pod die Klasse tatsächlich nutzt. - allowVolumeExpansion: erlaubt das nachträgliche Vergrößern von Claims.
Der Name der StorageClass ist bedeutsam: PVCs wählen ihre Klasse über das Feld storageClassName aus. Ohne Angabe greift die als Standard markierte Klasse.
Standard-Speicherklasse
Eine Klasse mit der Annotation storageclass.kubernetes.io/is-default-class: "true" wird automatisch verwendet, wenn ein PVC keine Klasse nennt. Markiert ein Administrator versehentlich mehrere Klassen als Standard, gewinnt die zuletzt erstellte.
Beispiel
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: schnell
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer
StorageClasses gehören zum Speicher-Ökosystem aus PersistentVolume, Claim und VolumeSnapshot. Mit kubectl lassen sie sich per kubectl get storageclass anzeigen.