这是本节的多页打印视图。 点击此处打印.

返回本页常规视图.

配置卷快照

配置卷快照的方式按类型可分为动态制备卷快照和预制备卷快照。

  • 动态制备卷快照通过创建VolumeSnapshot资源,从PVC中动态获取并创建快照,而不用使用已经存在的快照。
  • 预制备卷快照需要管理员事先在存储设备上创建好所需要的快照,通过创建VolumeSnapshotContent的方式使用已存在的快照。并且可以在创建VolumeSnapshot时指定关联的VolumeSnapshotContent。

1 - 动态制备卷快照

本章节将说明如何使用华为CSI动态制备卷快照。

前提条件

  • 源PVC存在,且PVC所在的backend支持创建VolumeSnapshot。

创建卷快照

VolumeSnapshot的配置文件示例如下:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: mysnapshot
spec:
  volumeSnapshotClassName: mysnapclass
  source:
    persistentVolumeClaimName: mypvc

实际参数可以参考 表1 中的说明修改。

表 1 VolumeSnapshot参数说明

参数

说明

备注

metadata.name

自定义的VolumeSnapshot对象名称。

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字字符开头和结尾。

spec.volumeSnapshotClassName

VolumeSnapshotClass对象名称。

--

spec.source.persistentVolumeClaimName

源PVC对象名称。

快照源PVC对应的名称

  1. 执行以下命令,使用已经创建的VolumeSnapshot配置文件创建VolumeSnapshot。

    kubectl create -f mysnapshot.yaml
    
  2. 执行以下命令,查看已创建的VolumeSnapshot信息。

    kubectl get volumesnapshot
    

    命令结果示例如下:

    NAME         READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT                                    CREATIONTIME   AGE
    mysnapshot   true         mypvc                               100Gi         mysnapclass     snapcontent-1009af0a-24c2-4435-861c-516224503f2d   <invalid>      78s
    

2 - 预制备卷快照

本章节将说明如何使用华为CSI预制备卷快照。

前提条件

  • 已在华为存储设备上创建源卷快照,并能够获取到创建的快照名称。

创建卷快照实体

VolumeSnapshotContent的配置文件示例如下:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotContent
metadata:
  name: mysnapshotcontent
spec:
  deletionPolicy: Retain
  driver: csi.huawei.com
  volumeSnapshotRef:
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    name: mysnapshot
    namespace: default
  source:
    snapshotHandle: mybackend.1.snapshot_001
  volumeSnapshotClassName: "mysnapclass"

实际参数可以参考 表1 中的说明修改。

表 1 VolumeSnapshotContent参数说明

参数

说明

备注

metadata.name

自定义的VolumeSnapshotContent对象名称。

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字字符开头和结尾。

spec.deletionPolicy

删除策略。支持如下类型:

  • Delete:自动回收资源。
  • Retain:手动回收资源。
  • Delete:删除VolumeSnapshotContent时会关联删除存储上的快照资源。
  • Retain:删除VolumeSnapshotContent时不会删除存储上的快照资源。

spec.driver

驱动名称。

该字段需要指定为安装华为CSI时设置的驱动名称。

取值和values.yaml文件中driverName一致。

spec.volumeSnapshotRef

需要绑定的目标VolumeSnapshot信息,包含VolumeSnapshot名称以及所属命名空间。

--

spec.source.snapshotHandle

存储快照资源的唯一标志。必选参数。

格式为:<backend-name>.<parent-id>.<snapshot-name>

该参数值由以下三部分构成:

  • <backend-name>:该快照资源对应的后端名称,可使用如下命令获取配置的后端信息:oceanctl get backend
  • <parent-id>:存储上快照资源的父资源对象ID,可通过DeviceManager查看。
  • <snapshot-name>:存储上快照资源的名称,可通过DeviceManager查看。
须知:

<snapshot-name>,存储上快照资源名称仅支持数字、字母以及下划线(_)的组合。

spec.volumeSnapshotClassName

VolumeSnapshotClass对象名称。

--

  1. 执行以下命令,使用已经创建的VolumeSnapshotContent配置文件创建VolumeSnapshotContent。

    kubectl create -f mysnapshotcontent.yaml
    
  2. 执行以下命令,查看已创建的VolumeSnapshot信息。

    kubectl get volumesnapshotcontent
    

    命令结果示例如下:

    NAME               READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER           VOLUMESNAPSHOTCLASS   VOLUMESNAPSHOT   VOLUMESNAPSHOTNAMESPACE   AGE
    mysnapshotcontent  true         0             Retain           csi.huawei.com   mysnapclass           mysnapshot       default                   4s
    

创建卷快照

当VolumeSnapshotContent以预制备方式创建完成后,可以基于该VolumeSnapshotContent创建VolumeSnapshot。VolumeSnapshot的配置文件示例如下:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: mysnapshot
  namespace: default
spec:
  volumeSnapshotClassName: mysnapclass
  source:
    volumeSnapshotContentName: mysnapshotcontent

实际参数可以参考 表2 中的说明修改。

表 2 VolumeSnapshot参数说明

参数

说明

备注

metadata.name

自定义的VolumeSnapshot对象名称。

以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字字符开头和结尾。

VolumeSnapshotContent指定的VolumeSnapshot名称保持一致。

metadata.namespace

VolumeSnapshot所属命名空间。

VolumeSnapshotContent指定的VolumeSnapshot命名空间保持一致。

spec.volumeSnapshotClassName

VolumeSnapshotClass对象名称。

--

spec.source.volumeSnapshotContentName

VolumeSnapshotContent对象名称。

快照源VolumeSnapshotContent对应的名称

  1. 执行以下命令,使用已经创建的VolumeSnapshot配置文件创建VolumeSnapshot。

    kubectl create -f mysnapshot.yaml
    
  2. 执行以下命令,查看已创建的VolumeSnapshot信息。

    kubectl get volumesnapshot
    

    命令结果示例如下:

    NAME         READYTOUSE  SOURCEPVC  SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT     CREATIONTIME   AGE
    mysnapshot   true                   mysnapshotcontent       0             mysnapclass     mysnapshotcontent   2m39s          8s