Failed backups are an operational reality, not an exception. This episode teaches systematic diagnosis: velero backup describe --details, velero backup logs, and velero bug to gather information, plus common cases — invalid BSL, failed snapshots due to a wrong VSL, node-agent crashes, and pending kopia backups.

So far everything has gone smoothly. Time to be honest: in production, backups will fail — credential rotation, full nodes, new plugin versions, wrong network policies. Episode 16 trains your instinct to stay calm and solve problems systematically, not by random trial and error.
Think like a mechanic: no one diagnoses a car by dismantling every part at once. There's an order — check symptoms, read the data, isolate the cause, then fix. Velero gives you the right instruments: describe, logs, and bug. Let's learn how to use them.
The first command in every incident:
velero backup describe my-backup --detailsWhat to look for here: phase (Completed, Failed, PartiallyFailed), the number of succeeded/failed resources, and the list of backed-up volumes. PartiallyFailed usually means some volumes failed — read further with logs.
The logs give you the actual error messages:
velero backup logs my-backup | grep -i error | head -20Or for restores:
velero restore logs my-restore | grep -i error | head -20For recurring issues or something suspicious of being a bug, gather information to report on GitHub:
velero bugThis command prints the client version, cluster status, and opens an issue template — making sure your report contains actionable data for maintainers.
Symptom: velero backup-location get shows Unavailable; backups fail with a bucket connection error.
Diagnosis:
velero backup-location get
kubectl logs -n velero deploy/velero | grep -i "backupstorage"Causes and solutions:
region, s3Url, and NetworkPolicy (episode 14).caCertRef on the BSL.Symptom: backup shows Completed but not a single volume has data — manifests exist, data is missing. In describe --details, the volume section is empty or marked "skipped".
Diagnosis:
velero snapshot-location get
kubectl logs -n velero deploy/velero | grep -i snapshotCauses and solutions:
velero snapshot-location create ...).velero plugin add velero/velero-plugin-for-aws:v1.14.0.--default-volumes-to-fs-backup → PVCs are only backed up as manifests. This is the most common case in installations without cloud snapshots: volume data is silently not stored.Warning
A "Completed" backup with empty volumes is the most dangerous failure — invisible until a restore happens. A non-negotiable habit: every routine backup is verified once with a restore to staging. One verification a week prevents surprises during a disaster.
Symptom: the node-agent DaemonSet keeps restarting (CrashLoopBackOff) on some nodes; file-level backups fail on those nodes.
Diagnosis:
kubectl get pods -n velero -l name=node-agent
kubectl logs -n velero -l name=node-agent --tail=50Causes and solutions:
--kubelet-root-dir at install.ReadOnlyRootFileSystem: true blocks the kopia cache → give write access to a volume on the cache directory (mentioned in the 1.18 docs).Symptom: file-level backup stays InProgress for a very long time, or the PodVolumeBackup hangs.
Diagnosis:
kubectl get podvolumebackups -n velero
kubectl describe podvolumebackups <name> -n velero
kubectl logs -n velero <node-agent-pod> | grep -i kopiaCauses and solutions:
--parallel-files-upload in config (episode 20).kopia-repo-* Secret; don't delete it.parallel-files-upload to match the available CPU limit.velero backup get, backup-location get, snapshot-location get.velero backup describe <name> --details.velero backup logs <name> | grep -i error.kubectl logs deploy/velero), node-agent.Tip
Keep this troubleshooting page as a checklist in your runbook (episode 12). When an incident happens at 3 a.m., a tired brain follows a list far more easily than thinking from scratch.
Key takeaways:
velero backup describe --details → velero backup logs → velero bug is the diagnosis flow.Unavailable: credentials, region, endpoint, TLS — check in that order.In episode 17 next, we dissect the version you're using: Velero 1.18 & the Latest Features — Kubernetes compatibility, kopia as the default uploader, the storage-class-mappings improvements, and the 1.14 to 1.18 release history.