Kubernetes v1.12引入了对volume snapshotting alpha的支持。此功能允许创建/删除卷快照,以及使用Kubernetes API本机创建新卷的功能。
1 什么是快照?
许多存储系统(如Google Cloud Persistent Disks、Amazon Elastic Block Storage和许多内部部署存储系统)都能够创建持久卷的“快照”。快照表示卷的时间点副本。快照可用于配置新卷(预先填充快照数据)或将现有卷还原到先前状态(由快照表示)。
2 为什么要将快照引入到Kubernetes?
Kubernetes卷插件系统已经提供了一个强大的抽象功能,可以自动化块和文件存储的配置、挂载和安装。
支持所有这些功能的是Kubernetes工作负载可移植性的目标:Kubernetes旨在在分布式系统应用程序和底层集群之间创建一个抽象层,以便应用程序可以与运行的集群的细节无关,并且应用程序部署不需要“特定于集群”的知识。
Kubernetes Storage SIG将快照操作定为许多有状态工作负载的关键功能。例如,数据库管理员可能希望在开始数据库操作之前对数据库卷进行快照。
通过提供在Kubernetes API中触发快照操作的标准方法,Kubernetes用户现在可以处理这样的用例,而无需绕过Kubernetes API(并手动执行特定于存储系统的操作)。
相反,Kubernetes用户现在有权将集群无关的快照操作合并到他们的工具和策略中,并且知道无论底层存储如何,它都可以对任意Kubernetes集群起作用。
此外,这些Kubernetes快照原语充当了基本构建块,可以为Kubernetes开发高级企业级存储管理功能:例如数据保护、数据复制和数据迁移。
3 哪个卷插件支持Kubernetes Snapshots?
Kubernetes支持三种类型的卷插件:in-tree、Flex和CSI。有关详细信息,请参阅Kubernetes Volume Plugin FAQ。
仅CSI驱动程序支持快照(不适用于in-tree或Flex)。要使用Kubernetes快照功能,请确保在集群上部署实现快照的CSI驱动程序。
目前,以下CSI驱动程序支持快照:GCE Persistent Disk CSI Driver、OpenSDS CSI Driver、Ceph RBD CSI Driver、Portworx CSI Driver。
其他驱动程序的快照支持工作正在进行,应该很快就可以使用。阅读“Kubernetes Goes Beta的容器存储接口(CSI)”博客文章,了解有关CSI以及如何部署CSI驱动程序的更多信息。
4 Kubernetes Snapshots API
与管理Kubernetes Persistent Volumes的API类似,Kubernetes Volume Snapshots引入了三个用于管理快照的新API对象:
-
VolumeSnapshot——由Kubernetes用户创建,以请求为指定卷创建快照。它包含有关快照操作的信息,例如拍摄快照时的时间戳以及快照是否可以使用;与PersistentVolumeClaim对象类似,此对象的创建和删除表示用户创建或删除集群资源(快照)的愿望。
-
VolumeSnapshotContent——成功创建快照后,由CSI卷驱动程序创建。它包含有关快照的信息,包括快照ID;与PersistentVolume对象类似,此对象表示集群上的已配置资源(快照);与PersistentVolumeClaim和PersistentVolume对象一样,创建快照后,VolumeSnapshotContent对象将绑定到为其创建的VolumeSnapshot(使用一对一映射)。
-
VolumeSnapshotClass——由集群管理员创建,以描述应如何创建快照。包括驱动程序信息、访问快照的秘密等。
</