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: Retain lässt Daten nach Löschung des Claims liegen, Delete entfernt sie mit.
  • volumeBindingMode: Immediate erstellt das Volume sofort, WaitForFirstConsumer erst, 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.