前提条件
已创建容器集群。
已在插件市场安装存储插件cstor-csi,且插件正常运行。(建议使用>=4.0的CSI版本)
使用限制
参见:“云硬盘使用限制”
快照类型
| 比较项 | 标准快照(STANDARD) | 极速快照(FAST) |
|---|---|---|
| 所属产品类型 | 云硬盘备份 | 云硬盘 |
| 生成快照速度 | 慢 | 快 |
| 限制条件 | 1. 需预先创建对应的云硬盘备份存储库。若未启用按需自动扩容功能,则存储库容量不足时需手动进行扩容。 |
|
| 价格 | 价格相对更低,但需预先购买存储库空间,可能在一定程度上造成资源浪费。 | 价格相对更高,但无需预先预留存储空间。 |
| 操作方法 | 除了snapclass中填的字段不同,其他K8S侧的用法与极速快照一致。 | 除了snapclass中填的字段不同,其他K8S侧的用法与标准快照一致。 |
| K8S适配性 | 更好 | 较差,主要问题在于源盘与云盘快照之间存在耦合关系,而 Kubernetes 将其视为两个独立的资源进行处理。 |
快照使用流程
| 功能 | 步骤 | 操作 |
| 创建云硬盘 | 1 | 创建PVC:通过动态(StorageClass+PVC)或 静态(PV+PVC)方式创建云盘类型PVC。 |
| 2 | 创建应用并使用云盘类型PVC,业务数据保存至云盘。 | |
| 创建快照 | 3 | 创建快照类。 |
| 4 | 创建快照(基于业务PVC),存储插件自动创建VolumeSnapshotContent和存储端的快照实例。 | |
| 使用快照恢复应用 | 5 | 基于步骤4的快照对象,创建新的PVC。 |
| 6 | 基于新创建的PVC,创建新的应用。 |
通过控制台使用云盘快照
1、创建云盘类型持久卷声明,参见使用云盘动态存储卷
2、创建快照类(VolumeSnapshotClass)
登录“云容器引擎管理控制台。
在集群列表页点击进入指定集群。
进入主菜单“存储”——“快照与备份”,选择快照类,单击左上角“创建快照类”。
在创建对话框,配置快照类的相关参数。配置项说明如下:
| 配置项 | 说明 |
| 存储类型 | 当前支持“云盘”和“通用”,这里选择云盘。 具体创建页中展示的存储类型由当前资源池支持情况决定。 |
| 快照类型 | 标准或者极速。 |
| 存储驱动 | 采用默认CSI驱动。 |
| 删除策略 | 可以配置当所绑定的 VolumeSnapshot 对象将被删除时,如何处理 VolumeSnapshotContent 对象,该策略字段必须指定: Delete(删除):底层的存储快照会和 VolumeSnapshotContent 对象 一起删除。 Retain(保留): 底层快照和 VolumeSnapshotContent 对象都会被保留。 |
| 默认快照类 | 管理员可以为未请求任何特定类绑定的 VolumeSnapshots 指定默认的 VolumeSnapshotClass。 对应VolumeSnapshotClass yaml中体现为设置注解 snapshot.storage.kubernetes.io/is-default-class: "true"。 |
| 存储库 | 当快照类型为标准快照时,必须指定存储库。 存储库需前往云硬盘备份控制台创建。请注意,当前存储插件不支持同名存储库,请确保所选存储库名称唯一。 当快照类型为极速快照,则无需填写该参数。 |
| 参数 | 快照类具有描述属于该卷快照类的卷快照的参数,可根据存储驱动接受不同的参数。 |
3、创建快照(VolumeSnapshot)
进入主菜单“存储”——“快照与备份”,选择快照,单击左上角“创建快照”;
在创建对话框,配置快照的相关参数。配置项说明如下:
参数配置完成后,点击“确定”。创建成功后,可以在快照列表查看。
| 配置项 | 说明 |
| 名称 | VolumeSnapshot 名称。 |
| 存储类型 | 这里选择云盘。 具体创建页中展示的存储类型由当前资源池支持情况决定。 |
| 快照类 | 选择上一步创建的VolumeSnapshotClass 。 |
| 存储卷声明 | 选择要创建快照的PVC,仅能选择云硬盘类型PVC。 |
注意
只有当快照状态变为“就绪”时,才表示快照真正创建完成。
通过控制台使用云盘快照
登录“云容器引擎”管理控制台;
在集群列表页点击进入指定集群;
进入主菜单 “存储”——“快照与备份”,进入快照列表页,选择指定快照,点击操作“创建存储卷快照PVC”。
在创建对话框,配置PVC的相关参数。配置项说明如下:
| 配置项 | 说明 |
| 名称 | PVC的名称。 |
| 存储声明类型 | 当前支持云盘、弹性文件、对象存储、并行文件和海量文件,这里选择云盘。 具体创建页中展示的存储类型由当前资源池支持情况决定。 |
| StorageClass名称 | 选择上一步创建的StorageClass。 |
| 容量 | 最小容量为快照大小。 |
| 卷模式 |
说明:如果使用共享盘存储,卷模式仅支持块设备(Block)。 |
| 访问模式 |
说明:如果使用非共享盘存储,访问模式不能为ReadWriteMany或者ReadOnlyMany。仅卷模式为块设备(Block)时,才可以使用共享盘,访问模式才可以为ReadWriteMany或者ReadOnlyMany。 |
参数配置完成后,点击“确定”。创建成功后,可以在持久卷声明列表查看。
进入持久卷声明列表页,等待PVC状态为“已绑定” 。此时,进入主菜单“存储”——“持久卷“,可以看到对应的PV创建 。
如果PVC一直未绑定,可以查看进入对应PVC详情页查看事件,或者查看cstor-csi日志进行定位。
注意
当源盘PVC的卷模式与基于该源盘快照创建的新PVC的卷模式不一致时,可能导致数据层面的异常。
例如:当源盘PVC是Block的卷模式,而源盘快照创建的新PVC的卷模式为Filesystem,则新的PVC在pod使用时会格式化成用户想要的文件系统,由于源盘中的数据为非文件系统格式,外部组件无法识别其内容,可能将其视为无效数据并进行覆盖,从而导致原有数据丢失。
因此,用户需确保源盘PVC的卷模式与基于其快照创建的新PVC的卷模式保持一致。
此外,若源盘PVC使用的文件系统为非常规类型,或文件系统本身存在兼容性损耗,可能导致CSI调用Linux命令时无法正确识别该文件系统,进而触发文件系统重建,造成数据丢失风险。
照通过kubectl命令行使用云盘快照
1、创建快照类(VolumeSnapshotClass)
使用kubectl连接集群,创建示例yaml文件vsc-example.yaml:
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: {名称} annotations: snapshot.storage.kubernetes.io/is-default-class: "false" #是否默认存储类 driver: disk.csi.cstor.com parameters: snapshotType: "STANDARD" #快照类型有STANDARD和FAST两种 # 快照存储库名字,当snapshotType为STANDARD时必填,当为FAST时无需填写 snapshotRepository: {仓库名} deletionPolicy: {删除策略}执行以下命令,创建VolumeSnapshotClass:
kubectl apply -f vsc-example.yaml查看创建的VolumeSnapshotClass:
登录“云容器引擎”管理控制台,在集群列表页点击进入指定集群,进入主菜单“存储”——“快照与备份”,在快照类列表查看。
2、创建快照(VolumeSnapshot)
使用kubectl连接集群,创建示例yaml文件vs-example.yaml:
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: {名称} namespace: {命名空间} spec: volumeSnapshotClassName: {快照类} source: persistentVolumeClaimName: {PVC-name}执行以下命令,创建VolumeSnapshot:
kubectl apply -f vs-example.yaml查看创建的快照:
登录“云容器引擎”管理控制台,在集群列表页点击进入指定集群,进入主菜单“存储”——“快照与备份”,在快照列表查看。
3、基于快照创建PVC
使用kubectl连接集群,创建示例yaml文件pvc-vs-example.yaml:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: {名称} namespace: {命名空间} spec: storageClassName: {存储类名称} dataSource: name: {VolumeSnapshot名称} kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io accessModes: - {访问模式} resources: requests: storage: {容量} volumeMode: {卷模式}执行以下命令,创建PVC:
kubectl apply -f pvc-vs-example.yaml查看创建的PVC:
登录“云容器引擎”管理控制台,在集群列表页点击进入指定集群,进入主菜单“存储”——“持久卷声明”,在列表查看。