配置卷快照

创建卷快照类

卷快照类(VolumeSnapshotClass) 提供了一种在配置VolumeSnapshot时描述存储“类”的方法。每个VolumeSnapshotClass都包含“driver”、“deletionPolicy” 和“parameters”字段, 在需要动态配置属于该类的VolumeSnapshot时使用。

VolumeSnapshotClass对象的名称很重要,是用户可以请求特定类的方式。 管理员在首次创建VolumeSnapshotClass对象时设置类的名称和其他参数, 对象一旦创建就无法更新。

华为CSI使用的VolumeSnapshotClass示例如下:

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
  name: mysnapclass
driver: csi.huawei.com
deletionPolicy: Delete

实际参数可以参考 表1 中的说明修改。由于当前华为CSI还不支持在VolumeSnapshotClass中设置自定义参数(parameters),因此建议只创建一个VolumeSnapshotClass,供所有快照使用。

表 1 VolumeSnapshotClass参数说明

参数

说明

备注

metadata.name

自定义的VolumeSnapshotClass对象名称。

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

driver

driver标识。必填参数。

该字段需要指定为安装华为CSI时设置的驱动名。默认的驱动名为“csi.huawei.com”。

deletionPolicy

快照删除策略。必填参数。可选值为:

  • Delete
  • Retain
  • 如果删除策略是 Delete,那么存储设备上的快照会和VolumeSnapshotContent对象一起删除
  • 如果删除策略是Retain,那么存储设备上的快照和VolumeSnapshotContent对象都会被保留。

操作步骤

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

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

    kubectl get volumesnapshotclass
    

    命令结果示例如下:

    NAME          DRIVER           DELETIONPOLICY   AGE
    mysnapclass   csi.huawei.com   Delete           25s
    

创建卷快照

VolumeSnapshot可以通过两种方式进行制备: 预制备或动态制备 。华为CSI当前仅支持动态制备。本章节将说明如何使用华为CSI动态制备VolumeSnapshot。VolumeSnapshot的配置文件示例如下:

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

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

表 2 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