Использование снапшотов
Чтобы использовать снапшоты, необходимо указать конкретный VolumeSnapshotClass
.
Для того чтобы получить список доступных VolumeSnapshotClass в вашем кластере, выполните:
kubectl get volumesnapshotclasses.snapshot.storage.k8s.io
Затем вы сможете использовать VolumeSnapshotClass для создания снапшота из существующего тома:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-first-snapshot
spec:
volumeSnapshotClassName: linstor
source:
persistentVolumeClaimName: my-first-volume
Спустя небольшой промежуток времени снапшот будет готов:
$ kubectl describe volumesnapshots.snapshot.storage.k8s.io my-first-snapshot
...
Spec:
Source:
Persistent Volume Claim Name: my-first-snapshot
Volume Snapshot Class Name: linstor
Status:
Bound Volume Snapshot Content Name: snapcontent-b6072ab7-6ddf-482b-a4e3-693088136d2c
Creation Time: 2020-06-04T13:02:28Z
Ready To Use: true
Restore Size: 500Mi
Вы можете восстановить содержимое этого снапшота создав новый PVC. Для этого необходимо указать снапшот в качестве источника:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-first-volume-from-snapshot
spec:
storageClassName: linstor-data-r2
dataSource:
name: my-first-snapshot
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi
Клонирование CSI-томов
Основываясь на концепции снапшотов, вы также можете осуществить клонирование persistent volumes, а точнее существующих persistent volume claims (PVC). Однако спецификация CSI не позволяет производить клонирование томов в пространстве имен и созданных со StorageClass, отличным от оригинального PVC. (обратитесь к документации Kubernetes чтобы узнать больше об ограничениях).
Чтобы клонировать том, создайте новый PVC и укажите исходный PVC в dataSource
:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: my-cloned-pvc
spec:
storageClassName: linstor-data-r2
dataSource:
name: my-origin-pvc
kind: PersistentVolumeClaim
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 500Mi