A snapshot is not a restore plan
- Kubernetes
- storage
- backup
- disaster-recovery
Snapshots capture storage state, not recovery confidence
Kubernetes VolumeSnapshots provide a way to request a snapshot of a persistent volume through CSI. That is useful, but it is not the same as knowing an application can recover. A snapshot records a storage-level point in time; a restore plan must also account for application consistency, Kubernetes objects, secrets, permissions, ordering, and the target environment.
For stateful systems, the practical question is not “do we have a snapshot?” It is “can we restore the service to a known point, prove the data is usable, and explain what was lost?”
Separate the recovery inputs
A useful restore plan distinguishes at least four inputs:
- Persistent data, such as PVC snapshots or filesystem backups.
- Kubernetes API objects, such as Deployments, StatefulSets, Services, ConfigMaps, and RBAC.
- Application-level consistency steps, such as flushing buffers or quiescing writes.
- External dependencies, such as DNS, object storage, identities, and credentials.
Velero’s documentation describes backups as Kubernetes custom resources and explains that backups can include copied Kubernetes objects plus persistent-volume snapshots. It also notes that backups are not strictly atomic if objects are changing while the backup runs. That limitation is exactly why restore testing matters.
Define a restore drill
A restore drill should be small enough to repeat and realistic enough to catch broken assumptions. A practical drill can be:
- Create or select a backup for one non-critical namespace.
- Restore into an isolated namespace or test cluster.
- Confirm Kubernetes objects are recreated with expected names, labels, and permissions.
- Mount restored volumes and run application-level checks.
- Verify the service from a client path, not only from pod status.
- Record restore time, missing objects, manual steps, and data-loss window.
The result should be a runbook update, not just a green check mark. If the drill required undocumented permissions, manual secret copying, or a storage-class change, the recovery plan was incomplete.
Watch for target-cluster compatibility
Restoring into another cluster is stricter than restoring into the same cluster. API versions, storage classes, CSI drivers, namespace policies, and credentials must exist in the target. Velero documents that restored API resources depend on compatible API group versions in the target cluster. Kubernetes VolumeSnapshots also depend on snapshot support from the CSI driver and the relevant snapshot classes.
For important services, keep the restore checklist near the application. The person performing recovery should not have to reverse-engineer which PVC belongs to which workload during an outage.
Sources
- Kubernetes Volume Snapshots for the CSI snapshot model and snapshot resources.
- Velero: How Velero Works for Kubernetes object backups, persistent-volume snapshots, restore workflow, and non-atomic backup caveats.
Technical references reviewed on 22 September 2026. This article is general recovery guidance, not an employer-specific disaster-recovery procedure.
Related articles
RunbooksStorage
Read a Ceph health warning before changing the cluster
Interpret Ceph health identifiers before choosing a recovery action or connecting storage warnings to workloads.
RunbooksKubernetes & GitOps
When a rollout stops progressing
Diagnose a stalled Kubernetes deployment by checking rollout state, pod events, readiness, and GitOps recovery paths.