Использование снапшотов
Чтобы использовать снапшоты, укажите конкретный 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