Kubernetes Volume Snapshots
Wenn produktive Systeme zuverlässig verfügbar bleiben müssen, spielt Datensicherheit eine zentrale Rolle. Neben klassischen Backups sind Volume Snapshots ein leistungsstarkes Werkzeug, um Datenstände in Kubernetes-Umgebungen schnell und effizient abzusichern – direkt im Cluster, ohne externe Tools und mit minimalem Aufwand.
Was sind Volume Snapshots?
Volume Snapshots sind ein offizielles Kubernetes-Feature, das den Zustand eines Persistent Volumes (PV) zu einem bestimmten Zeitpunkt einfängt.
Technisch erstellt das zugrunde liegende Storage-Backend (z. B. Ceph) eine speichereffiziente Kopie, meist über das Copy-on-Write-Prinzip (COW): Nur geänderte Daten werden neu gespeichert.
Damit funktionieren Snapshots analog zu Persistent Volumes oder Persistent Volume Claims (PVCs) – nur dass sie keinen dauerhaften Speicher bereitstellen, sondern einen Zeitpunkt einfrieren.
Das Ergebnis: Sie können zu jedem Snapshot-Zeitpunkt ein neues PVC mit dem zu diesem Zeitpunkt aktuellen Inhalt anlegen. Das ist ideal, um Änderungen zu testen, Migrationen vorzubereiten oder Dienste mit bereits vorhandenen Daten neu zu starten – schnell, ressourcenschonend und ohne Betriebsunterbrechung.
Was ist der Unterschied zu klassischen Backups?
Während Backups zentral von uns verwaltet werden, können Volume Snapshots direkt von Ihnen selbst erstellt werden.
Das bringt mehrere Vorteile:
- Sofortige Sicherung bei Änderungen: „Ich will kurz etwas ausprobieren – und notfalls zurück.“
- Klonen mit einem Befehl: PVCs können mithilfe des Snapshot-Features direkt kopiert werden.
- Nativ in Kubernetes integriert: Kein zusätzliches Tooling nötig, kein Datenexport.
- Speichereffizient: Da nur geänderte Daten kopiert werden, sparen Snapshots Speicherplatz.
Backups bleiben weiterhin essenziell, um Daten langfristig, revisionssicher und örtlich getrennt zu speichern. Snapshots sind dagegen das schnelle, operative Gegenstück – perfekt für kurzfristige Sicherungen, Tests oder Rollbacks.
Wie verwenden wir Snapshots
Damit Snapshots genutzt werden können, müssen in Kubernetes mehrere Ressourcen zusammenarbeiten:
| Klassischer Storage in Kubernetes | Snapshots in Kubernetes |
| StorageClass (werden von uns bereitgestellt: rook-ceph-block, rook-cephfs, local-path) | VolumeSnapshotClass (werden von uns bereitgestellt: csi-rbdplugin-snapclass, csi-cephfsplugin-snapclass) |
| PersistentVolume (wird von Kubernetes verwaltet) | volumesnapshot.snapshot.storage.k8s.io (wird von Ihnen erstellt) |
| PersistentVolumeClaim (wird von Ihnen erstellt) | volumesnapshotcontents.snapshot.storage.k8s.io (wird von Kubernetes verwaltet) |
Da Volume Snapshots ausschließlich mit CSI-Drivern kompatibel sind, steht diese Funktion bei Tralios derzeit für Ceph-Speicher (Block- und File-Storage) zur Verfügung.
Die Snapshot-Erstellung
Ein Snapshot kann mit wenigen Zeilen YAML erstellt werden:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: test1-snapshot
namespace: snapshot-testing
spec:
volumeSnapshotClassName: csi-rbdplugin-snapclass
source:
persistentVolumeClaimName: test1
Mit kubectl apply -f snapshot.yaml wird der Snapshot angelegt. Sobald der Status ReadyToUse erreicht ist, steht er zur Wiederherstellung oder zum Klonen bereit.
Eine genaue Beschreibung dazu finden Sie in unserem Q&A Artikel. Dort finden Sie ebenfalls einen detaillierten Anwendungsfall.
Wiederherstellung von Snapshots
Snapshots können direkt in neue PVCs überführt werden. Kubernetes erstellt daraufhin ein neues Volume auf Basis des Snapshots – ideal, um produktionsnahe Tests durchzuführen oder alte Datenstände gezielt wiederherzustellen.
So lassen sich zum Beispiel Updates sicher ausprobieren und bei Bedarf einfach zurückrollen oder Sie arbeiten direkt auf einer geklonten Kopie.
Snapshots sollten sparsam eingesetzt werden, besonders bei großen, sich stark ändernden Datensätzen. Zu viele parallele Snapshots können sonst unnötigen Speicher belegen und zu Performance-Problemen führen.
