Снапшоты постоянных томов в кластере Managed Kubernetes
Снапшоты постоянных томов (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 createdserviceaccount/snapshot-controller createdclusterrole.rbac.authorization.k8s.io/snapshot-controller-runner createdclusterrolebinding.rbac.authorization.k8s.io/snapshot-controller-role createdrole.rbac.authorization.k8s.io/snapshot-controller-leaderelection createdrolebinding.rbac.authorization.k8s.io/snapshot-controller-leaderelection createdcustomresourcedefinition.apiextensions.k8s.io/volumesnapshots.snapshot.storage.k8s.io createdcustomresourcedefinition.apiextensions.k8s.io/volumesnapshotcontents.snapshot.storage.k8s.io createdcustomresourcedefinition.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 AGEsnapshot-controller-7d7f5775d4-cz9j4 1/1 Running 0 3m37ssnapshot-controller-7d7f5775d4-tc42c 1/1 Running 0 3m37s -
Создайте yaml-файл с манифестом для объектов VolumeSnapshotClass и VolumeSnapshot:
Пример манифеста:
---apiVersion: snapshot.storage.k8s.io/v1kind: VolumeSnapshotClassmetadata:name: csi-hostpath-snapclass-v1driver: cinder.csi.openstack.orgdeletionPolicy: Deleteparameters:force-create: "true"---apiVersion: snapshot.storage.k8s.io/v1kind: VolumeSnapshotmetadata:name: new-snapshot-demospec:volumeSnapshotClassName: csi-hostpath-snapclass-v1source:persistentVolumeClaimName: my-pv-claimЗдесь:
csi-hostpath-snapclass-v1— имя объекта SnapshotClass;new-snapshot-demo— имя объекта VolumeSnapshot;my-pv-claim— имя объекта PersistentVolumeClaim, снапшот которого вы создаете.
-
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя yaml-файла с манифестом для объектов VolumeSnapshotClass и VolumeSnapshot. Например,snapshot.yaml.В ответе появится сообщение, что объекты созданы. Например:
volumesnapshotclass.snapshot.storage.k8s.io/csi-hostpath-snapclass-v1 createdvolumesnapshot.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 AGEsnapcontent-acc83be5-065f-42c1-a465-9f26497de1b1 Delete cinder.csi.openstack.org csi-hostpath-snapclass-v1 new-snapshot-demo default 9m7s
Восстановить постоянный том из снапшота
-
Создайте yaml-файл с манифестом для создания нового PersistentVolumeClaim из снапшота.
Пример манифеста:
apiVersion: v1kind: PersistentVolumeClaimmetadata:name: snapshot-demo-restorespec:storageClassName: fast.ru-3bdataSource:name: new-snapshot-demokind: VolumeSnapshotapiGroup: snapshot.storage.k8s.ioaccessModes:- ReadWriteOnceresources:requests:storage: 10GiЗдесь:
snapshot-demo-restore— имя нового объекта PersistentVolumeClaim, куда будут скопированы данные из снапшота;new-snapshot-demo— имя снапшота, из которого вы будете восстанавливать объект.
-
Примените манифест:
kubectl apply -f <file_name>Укажите
<file_name>— имя yaml-файла с манифестом для создания нового PersistentVolumeClaim из снапшота. Например,snapshot-restore.yaml. -
Убедитесь, что новый объект PersistentVolumeClaim создан:
kubectl get pvcВ ответе появится новый PersistentVolumeClaim. Например:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGEsnapshot-demo-restore Bound pvc-62394055-3780-4324-8871-1a56a447d70f 10Gi RWO fast.ru-3b 22m