tencent cloud

Feedback

Creating Snapshot and Using It to Restore Volume

Last updated: 2024-09-29 17:39:38

    Overview

    If you need to create a snapshot of the PVC data disk to back up data, or to restore the backup snapshot data to a new PVC, you can use the CBS-CSI add-on. This document describes how to use the CBS-CSI add-on to implement data backup and restoration of PVC.

    Prerequisites

    You have created a TKE cluster on v1.18 or later versions. For more information, see Creating a Cluster.
    You have installed the latest version of CBS-CSI.

    Directions

    Backing up PVC

    Creating VolumeSnapshotClass

    1. Use the following YAML to create a VolumeSnapshotClass object:
    apiVersion: snapshot.storage.k8s.io/v1beta1
    kind: VolumeSnapshotClass
    metadata:
    name: cbs-snapclass
    driver: com.tencent.cloud.csi.cbs
    deletionPolicy: Delete
    2. Run the following command to see if the VolumeSnapshotClass is created successfully:
    $ kubectl get volumesnapshotclass
    NAME DRIVER DELETIONPOLICY AGE
    cbs-snapclass com.tencent.cloud.csi.cbs Delete 17m

    Creating PVC snapshot VolumeSnapshot

    1. This document takes new-snapshot-demo as an example to use the following YAML to create a VolumeSnapshot object.
    apiVersion: snapshot.storage.k8s.io/v1beta1
    kind: VolumeSnapshot
    metadata:
    name: new-snapshot-demo
    spec:
    volumeSnapshotClassName: cbs-snapclass
    source:
    persistentVolumeClaimName: csi-pvc
    2. Run the following command to check whether the Volumesnapshot and Volumesnapshotcontent objects have been created successfully. If READYTOUSE is true, the creation is successful.
    $ kubectl get volumesnapshot
    NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
    new-snapshot-demo true www1-ivantestweb-0 10Gi cbs-snapclass snapcontent-ea11a797-d438-4410-ae21-41d9147fe610 22m 22m
    $ kubectl get volumesnapshotcontent
    NAME READYTOUSE RESTORESIZE DELETIONPOLICY DRIVER VOLUMESNAPSHOTCLASS VOLUMESNAPSHOT AGE
    snapcontent-ea11a797-d438-4410-ae21-41d9147fe610 true 10737418240 Delete com.tencent.cloud.csi.cbs cbs-snapclass new-snapshot-demo 22m
    3. Run the following command to obtain the snapshot ID of the Volumesnapshotcontent object. The field is status.snapshotHandle (here takes snap-e406fc9m as an example). You can log in to the CVM console > Snapshot List and use the snapshot ID to check whether the snapshot exists, as shown below:
    $ kubectl get volumesnapshotcontent snapcontent-ea11a797-d438-4410-ae21-41d9147fe610 -oyaml
    apiVersion: snapshot.storage.k8s.io/v1beta1
    kind: VolumeSnapshotContent
    metadata:
    creationTimestamp: "2020-11-04T08:58:39Z"
    finalizers:
    - snapshot.storage.kubernetes.io/volumesnapshotcontent-bound-protection
    name: snapcontent-ea11a797-d438-4410-ae21-41d9147fe610
    resourceVersion: "471437790"
    selfLink: /apis/snapshot.storage.k8s.io/v1beta1/volumesnapshotcontents/snapcontent-ea11a797-d438-4410-ae21-41d9147fe610
    uid: 70d0390b-79b8-4276-aa79-a32e3bdef3d6
    spec:
    deletionPolicy: Delete
    driver: com.tencent.cloud.csi.cbs
    source:
    volumeHandle: disk-7z32tin5
    volumeSnapshotClassName: cbs-snapclass
    volumeSnapshotRef:
    apiVersion: snapshot.storage.k8s.io/v1beta1
    kind: VolumeSnapshot
    name: new-snapshot-demo
    namespace: default
    resourceVersion: "471418661"
    uid: ea11a797-d438-4410-ae21-41d9147fe610
    status:
    creationTime: 1604480319000000000
    readyToUse: true
    restoreSize: 10737418240
    snapshotHandle: snap-e406fc9m

    Restoring data from the snapshot to a new PVC

    1. This document takes the VolumeSnapshot object new-snapshot-demo created in the previous step as an example and uses the following YAML to restore volume from the snapshot.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
    name: restore-test
    spec:
    storageClassName: cbs-csi
    dataSource:
    name: new-snapshot-demo
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io
    accessModes:
    - ReadWriteOnce
    resources:
    requests:
    storage: 10Gi
    2. Run the following command to check whether the restored PVC has been created successfully. You can view the corresponding diskid in the PV (here takes disk-gahz1kw1 as an example).
    $ kubectl get pvc restore-test
    NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
    restore-test Bound pvc-80b98084-29a3-4a38-a96c-2f284042cf4f 10Gi RWO cbs-csi 97s
    $ kubectl get pv pvc-80b98084-29a3-4a38-a96c-2f284042cf4f -oyaml
    apiVersion: v1
    kind: PersistentVolume
    metadata:
    annotations:
    pv.kubernetes.io/provisioned-by: com.tencent.cloud.csi.cbs
    creationTimestamp: "2020-11-04T12:08:25Z"
    finalizers:
    - kubernetes.io/pv-protection
    name: pvc-80b98084-29a3-4a38-a96c-2f284042cf4f
    resourceVersion: "474676883"
    selfLink: /api/v1/persistentvolumes/pvc-80b98084-29a3-4a38-a96c-2f284042cf4f
    uid: 5321df93-5f21-4895-bafc-71538d50293a
    spec:
    accessModes:
    - ReadWriteOnce
    capacity:
    storage: 10Gi
    claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: restore-test
    namespace: default
    resourceVersion: "474675088"
    uid: 80b98084-29a3-4a38-a96c-2f284042cf4f
    csi:
    driver: com.tencent.cloud.csi.cbs
    fsType: ext4
    volumeAttributes:
    diskType: CLOUD_PREMIUM
    storage.kubernetes.io/csiProvisionerIdentity: 1604478835151-8081-com.tencent.cloud.csi.cbs
    volumeHandle: disk-gahz1kw1
    nodeAffinity:
    required:
    nodeSelectorTerms:
    - matchExpressions:
    - key: topology.com.tencent.cloud.csi.cbs/zone
    operator: In
    values:
    - ap-beijing-2
    persistentVolumeReclaimPolicy: Delete
    storageClassName: cbs-csi
    volumeMode: Filesystem
    status:
    phase: Bound
    Note:
    If StorageClass uses topology awareness (to schedule the Pod before creating the PV), that is, to specify volumeBindingMode: WaitForFirstConsumer, you need to deploy the Pod (mount the PVC) to trigger the PV creation (create a CBS from the snapshot and bind it to the PV).
    
    Contact Us

    Contact our sales team or business advisors to help your business.

    Technical Support

    Open a ticket if you're looking for further assistance. Our Ticket is 7x24 avaliable.

    7x24 Phone Support