一、存储快照
快照功能:可以对线上的数据进行快速的复制、迁移等,及对重要数据误操作之后进行快速恢复。K8s中通过CSI Snapshotter controller来实现存储快照的功能。
Snapshot原理:创建snapshot过程,与pvc&pv设计类似
PVC ------------------> StorageClass -------------> PV
VolumeSnapshot -------> VolumeSnapshotClass ------> VolumeSnapshotContent
|______________________|___________________________|______________________|
| User | Cluster Admin | Dynamic Generate |
当用户需要存储快照的功能时,通过VolumeSnapshot来声明,并指定相应的VolumeSnapshotClass,之后由集群中的相关组件动态生成存储快照,及其对应的VolumeSnapshotContent。
Restore原理:有了snapshot后,如何将快照数据快速恢复过来
(1)
.—————————————————. .---------> VolumeSnapshot ----> VolumeSnapshotContent
| PVC (dataSource)|==='
'—————————————————' | (2)
'---------> PV
restore
先在PVC对象的 spec.dataSource 中指定一个VolumeSnapshot。当提交PVC后,k8s会根据StorageClass定义动态创建一个新PV,然后k8s会找到dataSource所指向的存储快照数据,并将这些快照数据恢复到新PV中。最后Pod再指定这个PVC,就可以使用新PV的快照数据。
1、Volume Snapshot/Restore使用示例
第一步:创建一个VolumeSnapshotClass对象
apiVersion: snapshot.storage.k8s.io/v1alpha1
kind: VolumeSnapshotClass
metadata:
name: disk-snapshotclass
snapshotter: diskplugin.csi.alibabacloud.com
snapshotter:指定真正创建存储快照时所使用的Volume插件,这个Volume插件是要提前部署好的
第二步:创建一个VolumeSnapshot
apiVersion: snapshot.storage.k8s.io/v1alpha1
kind: VolumeSnapshot
metadata:
name: disk-snapshot
spec:
snapshotClassName: disk-snapshotclass
source:
name: disk-pvc
kind: PersistentVolumeClaim
source:指定要做快照的数据源。提交这个VolumeSnapshot对象后,k8s会找到这个名为disk-pvc的PVC对应的PV存储,对这个PV存储做一次快照。
第三步:用存储快照恢复数据,即将快照数据恢复到新PV上
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: restore-pvc
namespace: simple
spec:
dataSource:
name

本文详细介绍了Kubernetes(K8s)中的存储快照功能,包括创建、恢复原理以及使用示例,阐述了VolumeSnapshot和VolumeSnapshotContent的概念。同时,文章解析了存储拓扑调度的背景、处理流程,以及如何通过Topology实现存储资源的合理调度,确保Pod与PV在相同拓扑域。内容涵盖了LocalPV的静态拓扑限制和动态PV的拓扑限制配置。
最低0.47元/天 解锁文章
1471

被折叠的 条评论
为什么被折叠?



