Снапшоты постоянных томов
Снапшоты постоянных томов (VolumeSnapshots) — это копии содержимого постоянных томов (PersistentVolume) в кластере Managed Kubernetes на определенный момент времени.
Снапшоты можно использовать для резервного копирования данных или переноса данных на другой ресурс без необходимости создавать новый диск.
В Managed Kubernetes снапшоты работают на ресурсах облачной платформы.
Создать снапшот
-
Настройте Volume Snapshot Controller — один из компонентов CSI Snapshotter:
kubectl apply -f https://raw.githubusercontent.com/selectel/mks-csi-snapshotter/master/deploy/setup-snapshot-controller.yaml
В ответе появится список созданных объектов:
deployment.apps/snapshot-controller created
serviceaccount/snapshot-controller created
clusterrole.rbac.authorization.k8s.io/snapshot-controller-runner created
clusterrolebinding.rbac.authorization.k8s.io/snapshot-controller-role created
role.rbac.authorization.k8s.io/snapshot-controller-leaderelection created
rolebinding.rbac.authorization.k8s.io/snapshot-controller-leaderelection created
customresourcedefinition.apiextensions.k8s.io/volumesnapshots.snapshot.storage.k8s.io created
customresourcedefinition.apiextensions.k8s.io/volumesnapshotcontents.snapshot.storage.k8s.io created
customresourcedefinition.apiextensions.k8s.io/volumesnapshotclasses.snapshot.storage.k8s.io created -
Проверьте, что поды с Volume Snapshot Controller созданы:
kubectl get pod -l app=snapshot-controller --namespace=kube-system
В ответе появится список под ов:
NAME READY STATUS RESTARTS AGE
snapshot-controller-7d7f5775d4-cz9j4 1/1 Running 0 3m37s
snapshot-controller-7d7f5775d4-tc42c 1/1 Running 0 3m37s -
Создайте yaml-файл с манифестом для объектов VolumeSnapshotClass и VolumeSnapshot:
Пример манифеста:
---
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-hostpath-snapclass-v1
driver: cinder.csi.openstack.org
deletionPolicy: Delete
parameters:
force-create: "true"
---
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: new-snapshot-demo
spec:
volumeSnapshotClassName: csi-hostpath-snapclass-v1
source:
persistentVolumeClaimName: my-pv-claimЗдесь:
csi-hostpath-snapclass-v1
— имя объекта SnapshotClass;new-snapshot-demo
— имя объекта VolumeSnapshot;my-pv-claim
— имя объекта PersistentVolumeClaim, снапшот которого вы создаете.
-
Примените манифест:
kubectl apply -f <snapshot.yaml>
Укажите
<snapshot.yaml>
— имя yaml-файла с манифестом для объектов VolumeSnapshotClass и VolumeSnapshot.В ответе появится сообщение, что объекты созданы:
volumesnapshotclass.snapshot.storage.k8s.io/csi-hostpath-snapclass-v1 created
volumesnapshot.snapshot.storage.k8s.io/new-snapshot-demo created -
Убедитесь, что создан объект VolumeSnapshotContent:
kubectl get volumesnapshotcontents.snapshot.storage.k8s.io
В ответе появится созданный объект VolumeSnapshotContent:
NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT VOLUMESNAPSHOTNAMESPACE AGE
snapcontent-acc83be5-065f-42c1-a465-9f26497de1b1 Delete cinder.csi.openstack.org csi-hostpath-snapclass-v1 new-snapshot-demo default 9m7s