Skip to content

Storage

Storage-Klassen

KlasseZugriffsmodusBeschreibung
hcloud-volumesReadWriteOnceBlockspeicher, Standardklasse des Clusters, unterstützt Volume Expansion
nfs-rwxReadWriteManyNFS, wenn mehrere Pods gleichzeitig schreiben müssen

hcloud-volumes ist die Default-Klasse: Ein PVC ohne storageClassName landet dort.

Die RWX-Klasse heißt nfs-rwx

Nicht nfs. Ein PVC mit storageClassName: nfs bleibt in Pending hängen.

yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: hcloud-volumes
  resources:
    requests:
      storage: 10Gi

Abrechnung

Das Abrechnungsminimum liegt bei 10 GiB pro Volume. Kleinere PVCs werden ganz normal provisioniert, aber trotzdem mit 10 GiB abgerechnet. Fünf PVCs zu je 2 GiB kosten also so viel wie fünf PVCs zu je 10 GiB.

Automatische Vergrößerung

Volumes können automatisch mitwachsen. Gesteuert wird das über drei Annotationen am PVC:

AnnotationBedeutung
resize.topolvm.io/thresholdAb wie wenig freiem Platz vergrößert wird
resize.topolvm.io/increaseUm wie viel pro Schritt vergrößert wird
resize.topolvm.io/storage_limitObergrenze, bis zu der vergrößert wird
yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: data
  annotations:
    resize.topolvm.io/threshold: "20%"
    resize.topolvm.io/increase: "10Gi"
    resize.topolvm.io/storage_limit: "100Gi"
spec:
  accessModes:
    - ReadWriteOnce
  storageClassName: hcloud-volumes
  resources:
    requests:
      storage: 10Gi

threshold ist freier Platz, nicht belegter Platz

"20%" bedeutet: vergrößern, sobald weniger als 20 % frei sind, also bei 80 % Füllstand. Genau andersherum, als die meisten es erwarten.

Trägst du "80%" ein, wird bereits bei 20 % Füllstand vergrößert. Das Volume wächst dann Schritt für Schritt bis zum storage_limit, ohne dass es je wirklich voll war, und du bezahlst die ganze Zeit für den Platz.

Wo es funktioniert

  • Auf hcloud-volumes. Auf nfs-rwx funktioniert die automatische Vergrößerung nicht.
  • Auch auf den Volumes von CloudNativePG und MariaDB.

Volumes wachsen nur

Ein Volume kann vergrößert, aber nie verkleinert werden. Das gilt für die automatische Vergrößerung genauso wie für ein manuell erhöhtes resources.requests.storage. Wenn du kleiner werden willst, bleibt nur: neues PVC anlegen, Daten kopieren, altes PVC löschen.

Wie es weitergeht