Периодический снимок тома в Kubernetes

Я написал CronJob , который периодически делает снимок тома моего PVC . Ниже приведен файл CronJob :

      kind: CronJob
metadata:
  name: mycronjob
spec:
  schedule: "*/2 * * * *"   # Run the job every 2 minutes
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: webserver-container
            image: kubectl:latest
            command:
            - /bin/sh
            - -c
            - /app/script.sh
            volumeMounts:
            - name: script-volume
              mountPath: /app
          restartPolicy: OnFailure
          volumes:
          - name: script-volume
            configMap:
              name: script-configmap

Файл снимка тома выглядит следующим образом:

      kind: VolumeSnapshot
metadata:
  name: snap-shot-test
spec:
  volumeSnapshotClassName: csi-snapclass
  source:
    persistentVolumeClaimName: my-test-apps

А вот файл скрипта :

      #!/bin/bash
kubectl apply -f volumesnapshot.yml

В первый раз задание cron успешно выполняется, но после этого появляется сообщение Volumesnapshot.snapshot.storage.k8s.io/snap-shot-test без изменений.

Как я могу периодически делать снимок тома PVC, имея две последние копии снимка?

1 ответ

Мне кажется, что то, что вы описываете, отражает файлы YAML, которыми вы поделились; нет ничего, что могло бы изменить имя резервной копии, и поэтому она никогда не создаст новую.

Если вы хотите сделать резервную копию одного PVC на другой «необработанным» способом с помощью сценариев, возможно, подумайте о задании, которое монтирует 2 тома (исходный и целевой) и выполняет простойcp -Rp /volume-source/* /volume-destination/

В противном случае, если вы хотите выполнить работу правильно, рассмотрите возможность использования такого инструмента, как Velero.

https://velero.io/