tencent cloud

masukan

Creating Snapshot and Using It to Restore Volume

Terakhir diperbarui:2022-11-11 11:15:47

    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
      
    1. 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
    
    1. 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
      
    1. 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).

    Hubungi Kami

    Hubungi tim penjualan atau penasihat bisnis kami untuk membantu bisnis Anda.

    Dukungan Teknis

    Buka tiket jika Anda mencari bantuan lebih lanjut. Tiket kami tersedia 7x24.

    Dukungan Telepon 7x24