这是本节的多页打印视图。
点击此处打印.
返回本页常规视图.
创建VolumeSnapshot
在Kubernetes中,卷快照(VolumeSnapshot)是一个存储系统上卷的快照。VolumeSnapshot能力为Kubernetes用户提供了一种标准的方式来在指定时间点复制卷的内容,并且不需要创建全新的卷。 例如,这一功能使得数据库管理员能够在执行编辑或删除之类的修改之前对数据库执行备份。
本章将介绍如何使用华为CSI创建VolumeSnapshot。为了完成创建VolumeSnapshot,需要完成如下三步:
- 检查卷快照依赖组件信息
- 配置VolumeSnapshotClass
- 配置VolumeSnapshot
1 - 检查卷快照依赖组件信息
如果您需要在容器环境中使用卷快照以及卷快照关联的特性,请通过检查卷快照依赖组件检查您的环境是否部署了卷快照依赖组件以及卷快照api-versions信息。
2 - 配置VolumeSnapshotClass
卷快照类(VolumeSnapshotClass)提供了一种在配置VolumeSnapshot时描述存储“类”的方法。每个VolumeSnapshotClass都包含“driver”、“deletionPolicy” 和“parameters”字段, 在需要动态配置属于该类的VolumeSnapshot时使用。
VolumeSnapshotClass对象的名称很重要,是用户可以请求特定类的方式。 管理员在首次创建VolumeSnapshotClass对象时设置类的名称和其他参数, 对象一旦创建就无法更新。
华为CSI使用的VolumeSnapshotClass示例如下:
如果您的环境中api-versions支持v1,请使用以下示例:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: mysnapclass
driver: csi.huawei.com
deletionPolicy: Delete
如果您的环境中api-versions支持v1beta1,请使用以下示例:
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshotClass
metadata:
name: mysnapclass
driver: csi.huawei.com
deletionPolicy: Delete
如果您的环境中api-versions同时支持v1和v1beta1,我们推荐您使用v1版本。
实际参数可以参考表 VolumeSnapshotClass参数说明中的说明修改。由于当前华为CSI还不支持在VolumeSnapshotClass中设置自定义参数(parameters),因此建议只创建一个VolumeSnapshotClass,供所有快照使用。
表 1 VolumeSnapshotClass参数说明
参数 | 说明 | 备注 |
---|
metadata.name | 自定义的VolumeSnapshotClass对象名称。 | 以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字字符开头和结尾。 |
driver | driver标识。必填参数。 | 该字段需要指定为安装华为CSI时设置的驱动名。默认的驱动名为“csi.huawei.com”。 |
deletionPolicy | 快照删除策略。必填参数。可选值为: | - 如果删除策略是 Delete,那么存储设备上的快照会和VolumeSnapshotContent对象一起删除
- 如果删除策略是Retain,那么存储设备上的快照和VolumeSnapshotContent对象都会被保留。
|
前提条件
华为CSI支持快照且运行所依赖的卷快照组件CRD已经安装。具体CRD信息请参考检查卷快照依赖组件章节说明,支持创建VolumeSnapshot的Kubernetes版本请参考表 Kubernetes版本与支持的特性。
操作步骤
执行以下命令,使用已经创建的VolumeSnapshotClass配置文件创建VolumeSnapshotClass。
kubectl create -f mysnapclass.yaml
执行以下命令,查看已创建的VolumeSnapshotClass信息。
kubectl get volumesnapshotclass
命令结果示例如下:
NAME DRIVER DELETIONPOLICY AGE
mysnapclass csi.huawei.com Delete 25s
3 - 配置VolumeSnapshot
VolumeSnapshot可以通过两种方式进行制备:预制备或动态制备。华为CSI当前仅支持动态制备。本章节将说明如何使用华为CSI动态制备VolumeSnapshot。
VolumeSnapshot的配置文件示例如下:
如果您的环境中api-versions支持v1,请使用以下示例:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: mysnapshot
spec:
volumeSnapshotClassName: mysnapclass
source:
persistentVolumeClaimName: mypvc
如果您的环境中api-versions支持v1beta1,请使用以下示例:
apiVersion: snapshot.storage.k8s.io/v1beta1
kind: VolumeSnapshot
metadata:
name: mysnapshot
spec:
volumeSnapshotClassName: mysnapclass
source:
persistentVolumeClaimName: mypvc
VolumeSnapshot中api-versions信息,请和创建VolumeSnapshotClass使用的版本保持一致。
实际参数可以参考表 VolumeSnapshot参数说明中的说明修改。
表 1 VolumeSnapshot参数说明
参数 | 说明 | 备注 |
---|
metadata.name | 自定义的VolumeSnapshot对象名称。 | 以Kubernetes v1.22.1为例,支持数字、小写字母、中划线(-)和点(.)的组合,并且必须以字母数字字符开头和结尾。 |
spec.volumeSnapshotClassName | VolumeSnapshotClass对象名称。 | -- |
spec.source.persistentVolumeClaimName | 源PVC对象名称。 | 快照源PVC对应的名称 |
前提条件
操作步骤
执行以下命令,使用已经创建的VolumeSnapshot配置文件创建VolumeSnapshot。
kubectl create -f mysnapshot.yaml
执行以下命令,查看已创建的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