tencent cloud

masukan

Creating Snapshot and Using It to Restore Volume

Terakhir diperbarui: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).
    
    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