Использование снапшотов

Чтобы использовать снапшоты, укажите конкретный VolumeSnapshotClass. Чтобы получить список доступных VolumeSnapshotClass в вашем кластере, выполните:

1kubectl get volumesnapshotclasses.snapshot.storage.k8s.io

Затем вы сможете использовать VolumeSnapshotClass для создания снапшота из существующего тома:

1apiVersion: snapshot.storage.k8s.io/v1
2kind: VolumeSnapshot
3metadata:
4  name: my-first-snapshot
5spec:
6  volumeSnapshotClassName: sds-replicated-volume
7  source:
8    persistentVolumeClaimName: my-first-volume

Спустя небольшой промежуток времени снапшот будет готов:

1$ kubectl describe volumesnapshots.snapshot.storage.k8s.io my-first-snapshot
2...
3Spec:
4  Source:
5    Persistent Volume Claim Name:  my-first-snapshot
6  Volume Snapshot Class Name:      sds-replicated-volume
7Status:
8  Bound Volume Snapshot Content Name:  snapcontent-b6072ab7-6ddf-482b-a4e3-693088136d2c
9  Creation Time:                       2020-06-04T13:02:28Z
10  Ready To Use:                        true
11  Restore Size:                        500Mi

Можно восстановить содержимое этого снапшота, создав новый PVC. Для этого необходимо указать снапшот в качестве источника:

1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4  name: my-first-volume-from-snapshot
5spec:
6  storageClassName: sds-replicated-volume-data-r2
7  dataSource:
8    name: my-first-snapshot
9    kind: VolumeSnapshot
10    apiGroup: snapshot.storage.k8s.io
11  accessModes:
12    - ReadWriteOnce
13  resources:
14    requests:
15      storage: 500Mi

Клонирование CSI-томов

На основе концепции снапшотов также можно выполнить клонирование Persistent Volume, а именно, существующих PersistentVolumeClaim (PVC). Однако спецификация CSI не позволяет производить клонирование томов в пространстве имен и StorageClass’ах, отличных от оригинального PVC. (обратитесь к документации Kubernetes, чтобы узнать больше об ограничениях).

Чтобы клонировать том, создайте новый PVC и укажите исходный PVC в dataSource:

1apiVersion: v1
2kind: PersistentVolumeClaim
3metadata:
4  name: my-cloned-pvc
5spec:
6  storageClassName: sds-replicated-volume-data-r2
7  dataSource:
8    name: my-origin-pvc
9    kind: PersistentVolumeClaim
10  accessModes:
11    - ReadWriteOnce
12  resources:
13    requests:
14      storage: 500Mi