容器服务Kubernetes版ACK(Container Service for Kubernetes)的云盘存储快照特性可以帮助您实现应用数据的备份和恢复。本文介绍ACK的存储快照的基本概念、使用流程,及说明如何动态、静态创建快照。
前提条件
- ACK发布的Kubernetes 1.18及之上版本默认提供了存储快照的功能,因此使用云盘存储快照时,请确保您创建的ACK集群Kubernetes版本等于或大于1.18。具体操作,请参见创建Kubernetes托管版集群。
- 访问指定地域的ECS控制台,确认已开启云盘快照服务。具体操作,请参见开通快照。
背景信息
在阿里云ACK集群中部署有状态服务通常使用云盘数据卷存储数据,虽然云盘本身提供了数据的备份(快照)恢复机制,但是如何将这种机制和Kubernetes服务集成并灵活地提供给应用使用?为了解决这个问题,Kubernetes使用以下两个特性来实现备份恢复能力:
- 通过VolumeSnapshot资源实现云盘的备份(快照功能)。
- 通过PVC的DataSource功能实现数据的恢复。
使用说明
为了实现快照相关功能,ACK通过CRD定义了以下3个相关的资源类型。
资源类型名称 | 描述 |
---|---|
VolumeSnapshotContent | 存储后端的快照实例,由系统管理员创建维护,无NameSpace。类似PV概念。 |
VolumeSnapshot | 声明一个快照实例,由用户创建维护,属于特定NameSpace。类似PVC概念。 |
VolumeSnapshotClass | 定义一个快照类,描述创建快照使用的参数、Controller。类似StorageClass概念。 |
存储快照资源的绑定规则如下:
- 在使用Snapshot资源类型时,和PV、PVC一样,首先您需绑定VolumeSnapshot与VolumeSnapshotContent。
- 集群会自动为正确配置了VolumeSnapshotClassName字段的VolumeSnapshot资源,创建VolumeSnapshotContent资源。 如果您没有配置或者配置错误的话则无法自动创建VolumeSnapshotContent,您需要手动创建VolumeSnapshotContent,并绑定VolumeSnapshot。
- VolumeSnapshotContent与VolumeSnapshot绑定是一对一的关系。
注意 删除VolumeSnapshotContent同时,后端的快照也会被删除。
动态创建快照
下图为在ACK使用的云盘上动态创建快照的使用流程图。

使用流程说明如下。
流程步骤 | 描述 |
---|---|
① | 创建原始应用,创建云盘卷保存数据。 |
② | 创建VolumeSnapshot,此时集群会自动创建VolumeSnapshotContent和存储端的快照实例。 |
③ | 创建新的应用,并配置PVC引用步骤②中创建的快照对象。 |
上述的三个步骤实现:
- 备份:图中的Volume1的数据被备份到Snapshot1。
- 恢复:Snapshot1的数据(也就是Volume1的数据)被恢复成Volume2。
本文示例将通过创建Nginx应用并恢复应用的数据,说明如何使用存储快照功能。操作步骤如下。
静态创建快照(使用ECS上已有快照)
将已有ECS快照导入至ACK集群中的操作步骤如下。