【阅读原文】戳:容器数据保护:基于容器服务 Kubernetes 版(ACK)备份中心实现K8s存储卷一键备份与恢复
引言
在K8s中,存储卷声明了容器所需的底层存储信息,并通过CSI(Container Storage Interface)提供了应用挂载存储卷的能力。挂载后,应用可以像访问容器内的本地存储一样访问数据。
应用中的数据通常是业务运行的关键,一旦数据丢失或损坏,可能会导致严重的业务中断和服务不可用。定期备份可以确保在发生意外时能够快速恢复数据。
此外,备份数据可以用于在不同的环境之间迁移,例如从开发环境迁移到生产环境,或者用于测试新的配置和更新,而不会影响实际的生产数据。
ACK备份中心介绍
对K8s集群中运行的业务及数据,ACK推出备份中心一站式容器化业务灾备及迁移方案。
备份中心概述:
备份中心此前已经通过应用备份功能支持了无数客户实现容灾和应用迁移。应用备份的核心是确保在恢复时能够将原应用及其使用的存储卷一并拉起。然而,在某些特定场景下,我们只需要对存储卷及其数据进行备份:
1. 集群已经有成熟的cicd能力,通过GitOps能快速拉起集群应用资源,无需备份。
2. 通过转换存储类功能实现存储类型的转换,如从NAS到云盘。
3. 保存数据在不同时间点的状态,以便在需要时恢复到特定的时间点。
针对这一需求,备份中心推出了以存储卷为核心(最小备份单元)的数据保护功能。该功能提供了丰富的存储卷选择方式,支持创建单次或定期的数据备份。在恢复时,备份中心会打包PV(Persistent Volume)、PVC(Persistent Volume Claim)以及底层数据进行恢复,并确保PVC的名称一致。这样一来,应用无需任何改造即可无感地关联到恢复的数据。
数据保护的原理如图所示:
默认情况下,备份中心使用阿里云云盘快照来备份和恢复阿里云云盘类型的存储卷数据。对于其他类型的存储卷,则使用阿里云云备份服务进行备份。在恢复时,备份中心支持通过存储类转换功能,将数据恢复成各种类型的存储,例如从NAS存储转换为云盘,或者更换NAS实例类型。
为了确保应用在恢复时能够无感地关联到对应的数据,备份中心在备份过程中会同时将PVC和PV的YAML文件存储在对象存储中。在恢复时,根据目标存储类的要求,自动调整PVC和PV的配置,从而保证名称一致性和数据的一致性。这种机制使得应用无需任何改造即可无缝对接恢复后的数据,确保业务快速恢复正常运行。
数据保护实践
接下来,我们将通过一个简单的NAS和云盘类型存储卷的跨集群迁移示例,展示备份中心数据保护功能的使用方式及其恢复效果。
待备份存储声明
假设待备份的存储卷的PVC名称分别为pvc-disk和pvc-nas,它们的存储类分别为alicloud-disk-topology-alltype和alibabacloud-cnfs-nas。下面是这两个PVC的YAML示例:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-disk namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi storageClassName: alicloud-disk-topology-alltype volumeMode: Filesystem volumeName: d-2ze50bonvbinhjxxxxxx --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-nas namespace: default spec: 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等资源一同备份恢复,恢复后的存储卷将处于已被恢复应用挂载中的状态。
总结
备份是保障数据安全和业务连续性的关键措施,在容器环境中尤为重要。通过备份中心的数据保护功能,可以最大程度地减少数据丢失的风险,并确保业务的稳定运行。
相关阅读:
1. 《阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案》
2. 《云端迁移:备份中心助力企业跨云迁移K8s容器服务平台》
3. 《K8s业务迁移最佳实践: 灵活管理资源备份与调整策略,实现高效简便的应用恢复》
我们是阿里巴巴云计算和大数据技术幕后的核心技术输出者。
获取关于我们的更多信息~