快照与备份
CCE通过云硬盘EVS服务为您提供快照功能,云硬盘快照简称快照,指云硬盘数据在某个时刻的完整复制或镜像,是一种重要的数据容灾手段,当数据丢失时,可通过快照将数据完整地恢复到快照时间点。
您可以创建快照,从而快速保存指定时刻云硬盘的数据。同时,您还可以通过快照创建新的云硬盘,这样云硬盘在初始状态就具有快照中的数据。
使用须知
- 快照功能仅支持v1.15及以上版本的集群,且需要安装基于CSI的everest插件才可以使用。
- 基于快照创建的云硬盘,其子类型(普通IO/高IO/超高IO)、是否加密、磁盘模式(VBD/SCSI)、共享性(非共享/共享)、容量等都要与快照关联磁盘保持一致,这些属性查询和设置出来后不能够修改。
- 只有可用或正在使用状态的磁盘能创建快照,且单个磁盘最大支持创建7个快照。
- 创建快照功能仅支持使用everest插件提供的存储类(StorageClass名称以csi开头)创建的PVC。使用Flexvolume存储类(StorageClass名为ssd、sas、sata)创建的PVC,无法创建快照。
- 加密磁盘的快照数据以加密方式存放,非加密磁盘的快照数据以非加密方式存放。
使用场景
快照功能可以帮助您实现以下需求:
- 日常备份数据
通过对云硬盘定期创建快照,实现数据的日常备份,可以应对由于误操作、病毒以及黑客攻击等导致数据丢失或不一致的情况。
- 快速恢复数据
更换操作系统、应用软件升级或业务数据迁移等重大操作前,您可以创建一份或多份快照,一旦升级或迁移过程中出现问题,可以通过快照及时将业务恢复到快照创建点的数据状态。
例如,当由于云服务器 A的系统盘 A发生故障而无法正常开机时,由于系统盘 A已经故障,因此也无法将快照数据回滚至系统盘A。此时您可以使用系统盘 A已有的快照新创建一块云硬盘 B并挂载至正常运行的云服务器 B上,从而云服务器 B能够通过云硬盘 B读取原系统盘 A的数据。当前CCE提供的快照能力与K8s社区CSI快照功能一致:只支持基于快照创建新云硬盘,不支持将快照回滚到源云硬盘。
- 快速部署多个业务
通过同一个快照可以快速创建出多个具有相同数据的云硬盘,从而可以同时为多种业务提供数据资源。例如数据挖掘、报表查询和开发测试等业务。这种方式既保护了原始数据,又能通过快照创建的新云硬盘快速部署其他业务,满足企业对业务数据的多元化需求。
创建快照
您可以通过控制台或kubectl命令行的方式创建快照,具体步骤如下:
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧选择“存储”,在右侧选择“快照与备份”页签。
- 单击右上角“创建快照”,在弹出的窗口中设置相关参数。
- 快照名称:填写快照的名称。
- 选择存储:选择要创建快照的PVC,仅能选择云硬盘类型PVC。
图1 创建快照
- 单击“创建”。
- 使用kubectl连接集群。
- 执行以下命令,创建snapshot.yaml文件,用于创建快照。文件名称支持自定义。
vim snapshot.yaml
文件内容如下:kind: VolumeSnapshot apiVersion: snapshot.storage.k8s.io/v1beta1 metadata: name: cce-disksnap-test # 快照名称,支持自定义 namespace: default spec: source: persistentVolumeClaimName: pvc-evs-test # PVC的名称,仅能选择云硬盘类型PVC volumeSnapshotClassName: csi-disk-snapclass
- 执行以下命令,创建上述快照。-n用于指定命名空间,您可以将default替换为对应的命名空间。
kubectl apply -f snapshot.yaml -n default
回显结果如下:
volumesnapshot.snapshot.storage.k8s.io/cce-disksnap-test created
- 执行以下命令,查看快照是否创建成功。
kubectl get volumesnapshot -n default
回显结果如下,当READYTOUSE为true,则说明快照已创建成功。
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS ... cce-disksnap-test true pvc-evs-test <none> 10Gi csi-disk-snapclass ...
使用快照创建PVC
通过快照创建云硬盘PVC时,磁盘类型、磁盘模式、加密属性需和快照源云硬盘保持一致。您可以通过控制台或命令行方式创建PVC,具体操作如下:
- 登录CCE控制台,单击集群名称进入集群。
- 在左侧选择“存储”,在右侧选择“快照与备份”页签。
- 找到需要创建PVC的快照,单击“创建存储卷声明 PVC”,并在弹出窗口中设置PVC参数。
图2 创建PVC
表1 设置PVC参数 参数
示例
说明
PVC名称
pvc-test
表示PVC名称。
命名规则:由小写字母、数字、中划线(-)组成,且中划线不可位于开头或结尾,字符包含前缀控制在63个以内。
计费模式
按需计费
表示底层存储的计费模式,包括“按需计费”和“包年/包月”。
存储卷名称前缀(可选)
-
用于定义自动创建的底层存储名称,实际创建的底层存储名称为“存储卷名称前缀”与“PVC UID”的拼接组合,如果不填写该参数,默认前缀为“pvc”。例如,存储卷名称前缀设置为“test”,则实际创建的底层存储名称test-{uid}。
集群版本为v1.23.14-r0、v1.25.9-r0、v1.27.6-r0、v1.28.4-r0及以上时支持,且集群中需安装2.4.15及以上版本的Everest插件。
资源标签
-
通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。集群中everest版本为2.1.39及以上时支持。
您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。具体请参见创建预定义标签。
CCE服务会自动创建“CCE-Cluster-ID=<集群ID>”、“CCE-Cluster-Name=<集群名称>”、“CCE-Namespace=<命名空间名称>”的系统标签,您无法自定义修改。
- 单击“创建”。
- 使用kubectl连接集群。
- 执行以下命令,创建pvc-test.yaml文件,通过快照创建PVC。文件名称支持自定义。
vim pvc-test.yaml
文件内容如下,关于PVC的详细介绍请参见kubectl命令行方式。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-test namespace: default annotations: everest.io/disk-volume-type: SSD # 云硬盘类型,需要与快照源云硬盘保持一致 everest.io/disk-volume-tags: '{"key1":"value1","key2":"value2"}' # 可选字段,用户自定义资源标签 labels: failure-domain.beta.kubernetes.io/region: <your_region> # 替换为云硬盘所在的区域 failure-domain.beta.kubernetes.io/zone: <your_zone> # 替换为云硬盘所在的可用区 spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: csi-disk dataSource: name: cce-disksnap-test # 快照的名称 kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
- 执行以下命令,创建PVC。-n用于指定命名空间,您可以将default替换为对应的命名空间。
kubectl apply -f pvc-test.yaml -n default
回显结果如下:
persistentvolumeclaim/pvc-test created
- 执行以下命令,查看PVC是否创建成功。
kubectl get pvc pvc-test
回显结果如下,当STATUS为Bound,则说明PVC已创建成功。
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-test Bound pvc-7b9f4c8d-1a2b-3c4d-5e6f-7g8h9i0jkl 10Gi RWO csi-disk 1m