From 768a30618f37a91c8c98283e4c30e051565540c8 Mon Sep 17 00:00:00 2001 From: bynare <1852531+bynare@users.noreply.github.com> Date: Wed, 16 Feb 2022 10:34:58 +1300 Subject: [PATCH] restic backupper: ignore volumes of non-running pods (#4584) --- changelogs/unreleased/4584-bynare | 1 + pkg/restic/backupper.go | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) create mode 100644 changelogs/unreleased/4584-bynare diff --git a/changelogs/unreleased/4584-bynare b/changelogs/unreleased/4584-bynare new file mode 100644 index 000000000..008c138c4 --- /dev/null +++ b/changelogs/unreleased/4584-bynare @@ -0,0 +1 @@ +Skip volumes of non-running pods when backing up diff --git a/pkg/restic/backupper.go b/pkg/restic/backupper.go index 4e411c62d..fd366a36b 100644 --- a/pkg/restic/backupper.go +++ b/pkg/restic/backupper.go @@ -153,6 +153,11 @@ func (b *backupper) BackupPodVolumes(backup *velerov1api.Backup, pod *corev1api. } } + // ignore non-running pods + if pod.Status.Phase != corev1api.PodRunning { + log.Warnf("Skipping volume %s in pod %s/%s - pod not running", volumeName, pod.Namespace, pod.Name) + continue + } // hostPath volumes are not supported because they're not mounted into /var/lib/kubelet/pods, so our // daemonset pod has no way to access their data. isHostPath, err := isHostPathVolume(&volume, pvc, b.pvClient.PersistentVolumes()) @@ -165,11 +170,6 @@ func (b *backupper) BackupPodVolumes(backup *velerov1api.Backup, pod *corev1api. continue } - // emptyDir volumes on finished pods are not supported because the volume is already gone and would result in an error - if (pod.Status.Phase == corev1api.PodSucceeded || pod.Status.Phase == corev1api.PodFailed) && volume.EmptyDir != nil { - continue - } - // volumes that are not mounted by any container should not be backed up, because // its directory is not created if !mountedPodVolumes.Has(volumeName) {