Memahami snapshot di ekosistem OpenEBS: dukungan VolumeSnapshotClass untuk Local PV LVM/ZFS dan Mayastor, merestore PVC dari snapshot, keterbatasan hostpath dasar, dan alur recovery dengan Velero untuk data di hostpath

Snapshots adalah "foto" volume pada satu titik waktu — alat pemulihan tercepat saat sesuatu tidak beres. Namun di dunia OpenEBS, kemampuan snapshot tidak merata: tersedia di engine tertentu, dan tidak tersedia di hostpath dasar yang kita pakai untuk sebagian besar series ini.
Episode 14 menjelaskan peta kemampuan snapshot secara jujur, lalu memberi alur recovery yang tepat untuk masing-masing tipe volume.
Snapshot diaktifkan lewat VolumeSnapshotClass per driver. Kemampuannya bergantung engine backing:
| Engine | Provisioner | Snapshot | Catatan |
|---|---|---|---|
| Hostpath | openebs.io/local | Tidak | Backup via Velero/rsync |
| LVM | local.csi.openebs.io | Ya | Snapshot LVM |
| ZFS | local.csi.openebs.io | Ya | Snapshot ZFS native |
| Replicated PV (Mayastor) | replicated.csi.openebs.io | Ya | Snapshot block |
Contoh VolumeSnapshotClass untuk LVM:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: openebs-lvm-snapshot
driver: local.csi.openebs.io
deletionPolicy: DeleteSnapshot dari PVC LVM:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: pg-data-snap
spec:
volumeSnapshotClassName: openebs-lvm-snapshot
source:
persistentVolumeClaimName: data-postgres-0kubectl apply -f volumesnapshot.yaml
kubectl get volumesnapshotRestore mengkloning dari snapshot menjadi PVC baru:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: data-postgres-restored
spec:
accessModes:
- ReadWriteOnce
storageClassName: openebs-lvm
dataSource:
name: pg-data-snap
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
resources:
requests:
storage: 5Gikubectl apply -f pvc-restore.yaml
kubectl get pvc data-postgres-restoredSnapshot memberi riwayat titik-waktu untuk dev/lab: kembalikan database ke kondisi kemarin dengan dua perintah.
Harsh truth: hostpath dasar tidak punya snapshot. Data di hostpath hidup di folder node; bila ingin perlindungan, satu-satunya jalur adalah backup level file:
rsync dari folder hostpath node.--default-volumes-to-fs-backup (restic/fs-backup) — backup file dari PVC mana pun tanpa dukungan snapshot driver.velero backup create ns-app \
--include-namespaces apps \
--default-volumes-to-fs-backupWarning
Jangan menganggap "saya tidak pakai snapshot, jadi aman tunggu backup". Untuk volume hostpath (media Laravel, DB lab), tetapkan jadwal backup — snapshot memang nyaman, tetapi Velero yang membuat data benar-benar aman.
Skenario latihan: Pod database dihapus, hostpath tetap menyimpan data.
postgres-0 dihapus → data di /var/lib/openebs/openebs-hostpath/data-postgres-0/ tetap ada.data-postgres-0 dihapus dengan reclaimPolicy: Delete → data ikut hilang (bila Retain, PV & folder tetap).ls -la /var/lib/openebs/openebs-hostpath/data-postgres-0/Untuk pemulihan cepat dari snapshot/backup: restore PVC baru, ubah StatefulSet ke PVC itu, dan verifikasi isi.
Note
ReclaimPolicy memegang kunci: Delete membersihkan volume begitu PVC dihapus; Retain membiarkan PV & folder ada untuk investigasi/restore manual. Pilih Retain untuk data penting — dan pelajari perbandingannya lebih dalam di episode 16.
Pada episode 14 ini, kalian memahami titik kuat dan lubang snapshot OpenEBS:
Inti yang harus dibawa pulang:
dataSource.Retain untuk data penting; uji restore berkala.Di episode 15 selanjutnya kita akan mengelola kapasitas: menambah disk node, expand LVM secara online, mengaktifkan allowVolumeExpansion, dan memahami bagaimana kapasitas NFS RWX mengikuti backing volume. Sampai jumpa di episode 15!