This episode compares Velero's two volume backup mechanisms: cloud snapshots (block-level via EBS/GCP PD, fast, needs a VSL) and file-level backup via the node-agent with restic/kopia (portable, works with S3 without cloud snapshots, suitable for non-cloud volumes and NFS).

This is one of the most important architectural decisions in the entire series: how data on persistent volumes is stored. In episode 3 you installed the node-agent with kopia, and in episode 4 volume backup ran through file-level backup. But on cloud clusters there's a much faster alternative: cloud snapshots. Episode 8 compares the two honestly — speed, cost, portability, and when to choose which.
Imagine two ways to copy a library book: photocopying it page by page (file-level — slow but the result is pure text, portable anywhere) vs scanning the whole shelf at once as blocks (snapshot — very fast but tied to that shelf's brand). Both are legitimate; both have a price.
Cloud snapshots leverage the cloud provider's native snapshot service: EBS snapshots (AWS), Persistent Disk snapshots (GCP), Azure Disk snapshots. Velero asks the provider to create an instant, consistent copy of the disk blocks — without opening pods or reading files one by one.
Prerequisites: a configured VSL (episode 3) and the node hosting the PVC must be in the same region as the VSL.
velero backup create snapshot-backup \
--include-namespaces app \
--snapshot-volumes=trueThe second approach is file-level backup run by the node-agent — a DaemonSet running on every node. When a volume backup is requested, the node-agent binds the volume to the host, reads it file by file, then stores the data in a repository on the BSL. Velero uses restic (legacy) or kopia (faster, default in Velero 1.18) as its repository engine.
velero backup create fs-backup \
--include-namespaces app \
--default-volumes-to-fs-backupFor installations that don't have the node-agent yet:
velero install --provider aws --plugins velero/velero-plugin-for-aws:v1.14.0 \
--bucket velero --secret-file ./credentials-velero \
--use-node-agent --uploader-type=kopia --default-volumes-to-fs-backup+----------------------+---------------------------+-----------------------------+
| Aspect | Cloud Snapshot (EBS/PD) | File-level (restic/kopia) |
+----------------------+---------------------------+-----------------------------+
| Speed | very fast (seconds) | slow for large data |
| Dependency | VSL + cloud region | node-agent + BSL |
| Vendor lock-in | high (region/cloud) | low (portable) |
| NFS / non-cloud | not supported | supported |
| Cost | per GB per snapshot | storage + node resources |
| Consistency | block-level | depends on file state |
+----------------------+---------------------------+-----------------------------+Note
In Velero 1.17/1.18, the restic path for new backups is already disabled — kopia is the default uploader. You can still restore from old restic backups, and restic restore support is removed entirely starting with 1.19. If you still have restic backups, plan their migration.
Key takeaways:
velero backup describe --details to see which volume mechanism was used.In episode 9 next, we make sure backups are consistent at the application level: pre/post backup hooks — flushing databases, pg_dump, resuming after backup — for PostgreSQL/MySQL and stateful applications so data isn't corrupted while being copied.