更新时间:2025-09-12 GMT+08:00
分享

快照与备份

CCE Autopilot集群通过云硬盘EVS服务为您提供快照功能。云硬盘快照简称快照,指云硬盘数据在某个时刻的完整复制或镜像,是一种重要的数据容灾手段。当数据丢失时,可通过快照将数据完整地恢复到快照时间点。

  • 创建快照通过快照可以保存云硬盘在指定时刻的状态,并在需要时用于数据恢复。
  • 使用快照创建PVC当应用误操作、系统异常或升级迁移等导致PV数据丢失或损坏时,您可以基于已有快照创建新的PVC,从而快速恢复到快照创建时的状态,保证业务连续性。

前提条件

  • 您已经创建好一个集群。
  • 如果您需要通过命令行创建,需要使用kubectl连接到集群,详情请参见通过kubectl连接集群

约束与限制

  • 目前,只有部分区域支持使用云硬盘,具体请以控制台为准。您可以通过功能总览,了解支持该功能的所有区域。
  • 集群版本要求在v1.27.8-r0、v1.28.6-r0及以上。如果您的集群版本不符合该要求,则需要通过集群升级使用该功能。
  • 基于快照创建的云硬盘,其子类型(普通IO/高IO/超高IO等)、是否加密、磁盘模式(VBD/SCSI)、共享性(非共享/共享)、容量等都要与快照关联母盘保持一致,这些属性查询和设置出来后不能够修改。
  • 只有可用或正在使用状态的磁盘能创建快照,且单个磁盘最大支持创建7个快照。
  • 加密磁盘的快照数据以加密方式存放,非加密磁盘的快照数据以非加密方式存放。

使用场景

快照功能可以帮助您实现以下需求:

  • 日常备份数据

    通过对云硬盘定期创建快照,实现数据的日常备份,可以应对由于误操作、病毒以及黑客攻击等导致数据丢失或不一致的情况。

  • 快速恢复数据

    更换操作系统、应用软件升级或业务数据迁移等重大操作前,您可以创建一份或多份快照,一旦升级或迁移过程中出现问题,可以通过快照及时将业务恢复到快照创建点的数据状态。

    例如,当由于云服务器A的系统盘A发生故障而无法正常开机时,由于系统盘A已经故障,因此也无法将快照数据回滚至系统盘A。此时您可以使用系统盘A已有的快照新创建一块云硬盘B并挂载至正常运行的云服务器B上,从而云服务器B能够通过云硬盘B读取原系统盘A的数据。

    当前CCE Autopilot集群提供的快照能力与K8s社区CSI快照功能一致:只支持基于快照创建新云硬盘,不支持将快照回滚到源云硬盘。

  • 快速部署多个业务

    通过同一个快照可以快速创建出多个具有相同数据的云硬盘,从而可以同时为多种业务提供数据资源。例如数据挖掘、报表查询和开发测试等业务。这种方式既保护了原始数据,又能通过快照创建的新云硬盘快速部署其他业务,满足企业对业务数据的多元化需求。

创建快照

您可以通过控制台或kubectl命令行的方式创建快照,具体步骤如下:

  1. 登录CCE控制台
  2. 单击集群名称进入集群,在左侧选择“存储”,在右侧选择“快照与备份”页签。
  3. 单击右上角“创建快照”,在弹出的窗口中设置相关参数。

    图1 创建快照
    表1 创建快照参数说明

    参数

    说明

    快照名称

    请填写快照的名称,例如“disksnap-test1”。

    选择存储

    选择要创建快照的PVC,仅能选择云硬盘类型PVC,例如选择“pvc”。

  4. 单击“创建”。在“快照与备份”页签中可以看到新建的快照信息。

    图2 新建的快照

  1. 使用kubectl连接集群。
  2. 执行以下命令,创建snapshot.yaml文件,用于创建快照。文件名称支持自定义。

    vim snapshot.yaml
    文件内容如下:
    kind: VolumeSnapshot
    apiVersion: snapshot.storage.k8s.io/v1beta1
    metadata:
      name: disksnap-test1   # 快照名称
      namespace: default
    spec:
      source:
        persistentVolumeClaimName: pvc     # PVC的名称,仅能选择云硬盘类型PVC
      volumeSnapshotClassName: csi-disk-snapclass

  3. 执行以下命令,创建上述快照。-n用于指定命名空间,您可以将default替换为对应的命名空间。

    kubectl apply -f snapshot.yaml -n default

    回显结果如下:

    volumesnapshot.snapshot.storage.k8s.io/disksnap-test1 created

  4. 执行以下命令,查看快照是否创建成功。

    kubectl get volumesnapshot -n default    

    回显结果如下,当READYTOUSE为true,则说明快照已创建成功。

    NAME                 READYTOUSE    SOURCEPVC       SOURCESNAPSHOTCONTENT     RESTORESIZE   SNAPSHOTCLASS         ...  
    disksnap-test1       true          pvc-evs-test    <none>                    10Gi          csi-disk-snapclass    ...     

使用快照创建PVC

当应用误操作、系统异常或升级迁移等导致PV数据丢失或损坏时,您可以基于已有快照创建新的PVC,从而快速恢复到快照创建时的状态,保证业务连续性。通过快照创建云硬盘PVC时,磁盘类型、磁盘模式、加密属性需和快照源云硬盘保持一致。您可以通过控制台或命令行方式创建PVC,具体操作如下:

  1. 登录CCE控制台
  2. 单击集群名称进入集群,在左侧选择“存储”,在右侧选择“快照与备份”页签。
  3. 找到需要创建PVC的快照,单击“创建存储卷声明 PVC”,并在弹出窗口中设置PVC参数。

    图3 利用快照创建PVC
    表2 利用快照创建PVC的参数说明

    参数

    说明

    PVC名称

    请输入PVC名称,如“pvc-disksnap”

    存储卷名称前缀(可选)

    定义自动创建的底层存储名称,实际创建的底层存储名称为“存储卷名称前缀”“PVC UID”的拼接组合,如果不填写该参数,默认前缀为“pvc”。

    例如,存储卷名称前缀设置为“test”,则实际创建的底层存储名称test-{uid}。

    资源标签

    通过为资源添加标签,可以对资源进行自定义标记,实现资源的分类。

    您可以在TMS中创建“预定义标签”,预定义标签对所有支持标签功能的服务资源可见,通过使用预定义标签可以提升标签创建和迁移效率。具体请参见创建预定义标签

    CCE服务会自动创建“CCE-Cluster-ID=<集群ID>”“CCE-Cluster-Name=<集群名称>”“CCE-Namespace=<命名空间名称>”的系统标签,您无法自定义修改。

  4. 单击“创建”。选择“存储卷声明”页签,可以看到新建的PVC。

    图4 新建的PVC

  1. 使用kubectl连接集群。
  2. 执行以下命令,创建pvc-test.yaml文件,通过快照创建PVC。文件名称支持自定义。

    vim pvc-test.yaml
    文件内容如下,关于PVC的详细介绍请参见使用kubectl命令行方式
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-disksnap    # PVC名称
      namespace: default
      annotations:
        everest.io/disk-volume-type: SSD     # 云硬盘类型,需要与快照源云硬盘保持一致
        everest.io/disk-volume-tags: '{"key1":"value1","key2":"value2"}' # 可选字段,用户自定义资源标签
        everest.io/disk-iops: '3000'      # 可选字段,设置云硬盘的IOPS,仅云硬盘类型为GPSSD2或ESSD2时支持配置
        everest.io/disk-throughput: '125' # 可选字段,设置云硬盘的吞吐量,仅云硬盘类型为GPSSD2时支持配置
      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: disksnap-test1             # 快照的名称
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io

  3. 执行以下命令,创建PVC。-n用于指定命名空间,您可以将default替换为对应的命名空间。

    kubectl apply -f pvc-test.yaml -n default

    回显结果如下:

    persistentvolumeclaim/pvc-disksnap created

  4. 执行以下命令,查看PVC是否创建成功。

    kubectl get pvc pvc-disksnap

    回显结果如下,当STATUS为Bound,则说明PVC已创建成功。

    NAME          STATUS   VOLUME                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    pvc-disksnap   Bound    pvc-7b9f4c8d-1a2b-3c4d-5e6f-7g8h9i0jkl   10Gi     RWO         csi-disk     1m    

相关文档