Storage
Storage-Klassen
| Klasse | Zugriffsmodus | Beschreibung |
|---|---|---|
hcloud-volumes | ReadWriteOnce | Blockspeicher, Standardklasse des Clusters, unterstützt Volume Expansion |
nfs-rwx | ReadWriteMany | NFS, 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.
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data
spec:
accessModes:
- ReadWriteOnce
storageClassName: hcloud-volumes
resources:
requests:
storage: 10GiAbrechnung
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:
| Annotation | Bedeutung |
|---|---|
resize.topolvm.io/threshold | Ab wie wenig freiem Platz vergrößert wird |
resize.topolvm.io/increase | Um wie viel pro Schritt vergrößert wird |
resize.topolvm.io/storage_limit | Obergrenze, bis zu der vergrößert wird |
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: 10Githreshold 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. Aufnfs-rwxfunktioniert 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
- Datenbanken, die diese Klassen nutzen
- Abrechnung und Kontingente, wie Storage abgerechnet wird