Kubernetes StorageClass

Eine StorageClass wird benutzt um einen Datenspeicher für die Pods zur Verfügung zu stellen.

Es gibt verschiedene Provider über die die Speicherung durchgeführt werden kann.

Eine StorageClass als default festlegen

Um für einen Cluster einen Storage als Voreinstellung zu haben wird in der Regel die erste angelegte StorageClass als default definiert.

Wird nun Storage angefordert, dann wird diese Klasse als StorageClass benutzt.

In der StorageClass Liste erscheint die StorageClass dann mit der Kennzeichnung (default).

$ kubectl get StorageClass
NAME                 PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
longhorn (default)   driver.longhorn.io   Retain          Immediate           true                   24m
longhorn-static      driver.longhorn.io   Delete          Immediate           true                   24m

StorageClass als nicht-default setzen

Mittels eines Patches lässt sich eine StorageClass als nicht-default setzen. Ist kein default definiert und eine Resource benötigt ein Volume, dann muss eine StorageClass explizit angegeben sein.

kubectl patch StorageClass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"false"}}}'

StorageClass als default setzen

Sobald es keine default StorageClass gibt, kann eine StorageClass als default festgelgt werden. Dies geschieht analog zum Entfernen der default Definition.

kubectl patch StorageClass longhorn -p '{"metadata": {"annotations":{"storageclass.kubernetes.io/is-default-class":"true"}}}'