容器数据保护:基于ACK备份中心实现K8s存储卷一键备份与恢复

360影视 日韩动漫 2025-03-30 18:08 2

摘要:在 K8s 中,存储卷声明了容器所需的底层存储信息,并通过 CSI(Container Storage Interface)提供了应用挂载存储卷的能力。挂载后,应用可以像访问容器内的本地存储一样访问数据。

2025年03月30日 09:03上海

Cloud Native

在 K8s 中,存储卷声明了容器所需的底层存储信息,并通过 CSI(Container Storage Interface)提供了应用挂载存储卷的能力。挂载后,应用可以像访问容器内的本地存储一样访问数据。

应用中的数据通常是业务运行的关键,一旦数据丢失或损坏,可能会导致严重的业务中断和服务不可用。定期备份可以确保在发生意外时能够快速恢复数据。

此外,备份数据可以用于在不同的环境之间迁移,例如从开发环境迁移到生产环境,或者用于测试新的配置和更新,而不会影响实际的生产数据。

ACK备份中心介绍

Cloud Native

对 K8s 集群中运行的业务及数据,ACK 推出备份中心一站式容器化业务灾备及迁移方案。

备份中心概述:

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/backup-center-overview?spm=a2c4g.11186623.0.i5

备份中心此前已经通过应用备份功能支持了无数客户实现容灾和应用迁移。应用备份的核心是确保在恢复时能够将原应用及其使用的存储卷一并拉起。然而,在某些特定场景下,我们只需要对存储卷及其数据进行备份:

集群已经有成熟的 cicd 能力,通过 GitOps 能快速拉起集群应用资源,无需备份。通过转换存储类功能实现存储类型的转换,如从 NAS 到云盘。保存数据在不同时间点的状态,以便在需要时恢复到特定的时间点。

针对这一需求,备份中心推出了以存储卷为核心(最小备份单元)的数据保护功能。该功能提供了丰富的存储卷选择方式,支持创建单次或定期的数据备份。在恢复时,备份中心会打包 PV(Persistent Volume)、PVC(Persistent Volume Claim)以及底层数据进行恢复,并确保 PVC 的名称一致。这样一来,应用无需任何改造即可无感地关联到恢复的数据。

数据保护的原理如图所示:

默认情况下,备份中心使用阿里云云盘快照来备份和恢复阿里云云盘类型的存储卷数据。对于其他类型的存储卷,则使用阿里云云备份服务进行备份。在恢复时,备份中心支持通过存储类转换功能,将数据恢复成各种类型的存储,例如从 NAS 存储转换为云盘,或者更换 NAS 实例类型。

为了确保应用在恢复时能够无感地关联到对应的数据,备份中心在备份过程中会同时将 PVC 和 PV 的 YAML 文件存储在对象存储中。在恢复时,根据目标存储类的要求,自动调整 PVC 和 PV 的配置,从而保证名称一致性和数据的一致性。这种机制使得应用无需任何改造即可无缝对接恢复后的数据,确保业务快速恢复正常运行。

数据保护实践

Cloud Native

接下来,我们将通过一个简单的 NAS 和云盘类型存储卷的跨集群迁移示例,展示备份中心数据保护功能的使用方式及其恢复效果。

待备份存储声明

假设待备份的存储卷的 PVC 名称分别为 pvc-disk 和 pvc-nas,它们的存储类分别为 alicloud-disk-topology-alltype 和 alibabacloud-cnfs-nas。下面是这两个 PVC 的 YAML 示例:

apiVersion: v1kind: PersistentVolumeClaimmetadata: name: pvc-disk namespace: defaultspec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-topology-alltype volumeMode: Filesystem volumeName: d-2ze50bonvbinhjxxxxxx---apiVersion: v1kind: PersistentVolumeClaimmetadata: name: pvc-nas namespace: defaultspec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi storageClassName: alibabacloud-cnfs-nas volumeMode: Filesystem volumeName: nas-4dxxxxxx-xxxx-xxxx-xxxx-4b1b4cxxxxxx

备份流程

在备份集群的ACK控制台中,进入运维管理中的应用备份控制台。初次使用时,需要按引导进行授权、组件安装与备份仓库创建操作。

根据业务的需求,选择创建备份计划立即备份。备份计划能根据备份周期配置,在设置的时间点自动触发单次的备份。

备份时,选择备份类型为数据保护,并选中我们需要备份的命名空间列表。在本次实践中,只需要备份default命名空间下的存储卷,因此备份命名空间只选择default即可。

在选定命名空间下,数据保护功能提供了三种选择存储卷的方式,符合条件的存储卷不论是否正在被挂载,都将被备份。

全部数据卷:备份所有存储卷。特定类型存储卷:需要继续选择存储类,备份特定存储类的存储卷。指定存储卷:需要继续选择存储声明,仅备份选中存储声明指向的存储卷。

如图使用了制定存储卷的方式,选择待备份的存储声明:pvc-disk 与 pvc-nas。

由于创建的是备份计划,在控制台备份计划列表中,可找到相关记录。

点击操作列的查看备份记录,找到触发的备份记录。备份记录展示了备份的类型、目标、源集群、时间戳等基础信息,并显示了本次备份的结果。

点击备份记录名称,可以查看本次的详情。

其中对于阿里云云盘类型的存储卷 pvc-disk,默认使用云盘快照进行备份,backupId 为对应的集群 volumeSnapshot 资源名称。对于 NAS 类型的存储卷 pvc-nas,使用云备份服务进行备份,backupId 为对应的云备份备份任务 ID。

恢复流程

切换至待恢复的集群,进入应用备份控制台,点击立即恢复

选中备份存放的备份仓库,若该仓库未关联过当前集群,需点击右侧初始化仓库进行关联。

在备份记录列表中,可以看到该备份仓库下的备份正在往本集群中同步。同步流程为在本集群中创建相关的备份元信息,备份中实际的 YAML 与数据仍存储在云端。

选择目标备份,点击立即恢复。除了常规恢复配置,还可以通过高级配置的存储类转换功能,将非阿里云盘类型的存储转换成指定存储,比如可以将 alibabacloud-cnfs-nas 类型的 pvc-nas 转换成某个云盘存储类,实现 NAS 到云盘的存储转换。

创建恢复任务后,可以在查看恢复记录列表中,查询某个恢复记录的信息与状态。同样的,若恢复异常,可以在状态栏及名称处查询具体失败的详情。

恢复任务成功后,查询恢复的存储声明,可以看见 PVC 均已被创建出来,且名称与原来一致。本次实践未勾选存储类转换配置,若选择 alicloud-disk-topology-alltype 并勾选,则 pvc-nas 应与 pvc-disk 类型一致。

由于 alibabacloud-disk-topology-alltype 为 WaitForFirstConsumer 类型的存储类,创盘行为将延迟至第一次被应用挂载。查询 pvc-disk 的 yaml,可看到已经设置了相关的快照源信息。通过 GitOps 等方式重新部署有状态应用,可验证新的云盘被创建,PVC 转换成 Bound 状态。

dataSource: apiGroup: snapshot.storage.k8s.io kind: VolumeSnapshot name: pvc-disk-volumesnapshot20250320xxxxxx

本实践展开介绍了备份中心的数据保护功能的使用方式与效果,若您期望备份或迁移完整的应用,可使用应用备份功能。应用备份功能可以将涉及的有状态应用及其配置项、服务、路由以及涉及的CRD等资源一同备份恢复,恢复后的存储卷将处于已被恢复应用挂载中的状态。

总结

Cloud Native

备份是保障数据安全和业务连续性的关键措施,在容器环境中尤为重要。通过备份中心的数据保护功能,可以最大程度地减少数据丢失的风险,并确保业务的稳定运行。

来源:小火看科技

相关推荐