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
Auf hcloud-volumes gibt es ein Abrechnungsminimum von 10 GiB pro Volume. Kleinere PVCs werden ganz normal provisioniert, aber mit 10 GiB abgerechnet. Fünf Volumes zu je 2 GiB kosten also so viel wie fünf zu je 10 GiB. Diese Untergrenze kommt vom Blockspeicher selbst, nicht von uns.
nfs-rwx hat kein Minimum. Es wird mit der angeforderten Größe abgerechnet, ein geteiltes Volume mit 1 GiB also als 1 GiB.
Für Uploads, Medien und alles andere, das kein Dateisystem braucht, ist Object Storage meist günstiger als ein Volume und nicht an einen einzelnen Namespace gebunden.
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.
Backups der Plattform
Dein Namespace wird täglich gesichert, einschließlich der Inhalte persistenter Volumes. Die täglichen Sicherungen bewahren wir 30 Tage auf. In einem bezahlten Tarif kommen eine wöchentliche Sicherung für 12 Wochen und eine monatliche für 6 Monate dazu; im Free Tier gibt es nur die täglichen Sicherungen. Die Sicherungen liegen an einem zweiten Standort in der EU.
Für eine Wiederherstellung stellst du eine Anfrage über das Portal, der Support führt sie dann aus, für den ganzen Namespace oder für einzelne Volumes. Einen Self-Service-Knopf zum Zurückspielen gibt es nicht: Wiederherstellungen werden für dich gemacht, nicht von dir.
Das ersetzt deine eigenen Backups nicht
Eine tägliche Namespace-Sicherung ist eine Untergrenze, keine Strategie. Sie liefert dir keine sekundengenau konsistente Datenbank, und bei Daten, die deine Anwendung beschädigt statt verloren hat, hilft sie nicht. Sichere alles selbst, was du nicht wiederherstellen kannst, siehe Datenbanken.
Wie es weitergeht
- Datenbanken, die diese Klassen nutzen
- Abrechnung und Kontingente, wie Storage abgerechnet wird