Een VolumeSnapshot is een momentopname (snapshot) van de inhoud van een Kubernetes-volume, meestal een volume dat via een PersistentVolumeClaim wordt gebruikt. Je kunt het zien als een foto van de data op een bepaald moment, gemaakt via de onderliggende storageprovider.
Hoe je een VolumeSnapshot maakt leggen we uit in onze handleiding ‘VolumeSnapshots gebruiken in Kubernetes’.
Wanneer gebruik je VolumeSnapshots?
VolumeSnapshots zijn vooral nuttig wanneer je snel wilt terugkeren naar een eerdere staat van een volume. Enkele veelvoorkomende use cases zijn:
- Voor een applicatie-upgrade: maak een snapshot voordat je een database, CMS of andere stateful applicatie bijwerkt.
- Voor riskante database-acties: maak een snapshot voordat je migraties, imports of bulk deletes uitvoert.
- Na een foutieve wijziging: herstel een nieuwe PVC vanuit de snapshot en koppel je workload daarna aan de herstelde data.
- Voor een testomgeving: maak een tijdelijk testvolume met data uit een snapshot, zonder het productievolume zelf te wijzigen.
Gebruik VolumeSnapshots niet als enige back-up voor belangrijke productieomgevingen. Een snapshot staat binnen dezelfde storage-omgeving. Voor disaster recovery blijft een externe back-up of applicatiespecifieke export belangrijk.
Is een VolumeSnapshot hetzelfde als een backup?
Niet helemaal. Een VolumeSnapshot is een snapshot op storage-niveau. Dat betekent dat de exacte werking afhangt van de gebruikte storageprovider en CSI-driver. Een backupstrategie bevat meestal meer dan alleen snapshots, bijvoorbeeld retentiebeleid, offsite opslag, restore-tests, encryptie en monitoring. Kort gezegd: een VolumeSnapshot kan onderdeel zijn van je backupstrategie, maar is niet automatisch een volledige backupoplossing.
Welke Kubernetes-resources worden gebruikt voor VolumeSnapshots?
Bij VolumeSnapshots kom je meestal drie resources tegen:
- VolumeSnapshot: De aanvraag van een gebruiker (via een .yaml-file) om een snapshot te maken van een volume. Het lijkt conceptueel op een PersistentVolumeClaim.
- VolumeSnapshotContent: De daadwerkelijke snapshot in het cluster, vergelijkbaar met hoe een PersistentVolume de daadwerkelijke storage representeert.
- VolumeSnapshotClass: Bepaalt hoe snapshots worden aangemaakt, bijvoorbeeld welke CSI-driver wordt gebruikt en wat er moet gebeuren wanneer de snapshot wordt verwijderd.
Kan ik VolumeSnapshots maken van meerdere volumes tegelijk?
Voor gewone VolumeSnapshots maak je snapshots per volume. Voor applicaties met meerdere volumes kan een losse snapshot per volume onvoldoende zijn als je write-order consistency nodig hebt. Kubernetes verwijst voor geavanceerde use cases naar Volume Group Snapshots.