存储卷快照和pvc于pv创建的过程很类似
都是:
PVC-
—>StorageClass
—->PV
VolumeSnapshot
—->VolumeSnapshotClass
—–>VolumeSnapshotContent
在kubernetes中用VolumeSnapshotContent
和VolumeSnapshot
这样的API资源去为用户和管理员创建卷快照
其中:
VolumeSnapshotContent
是从集群中指定的volume中获取的快照, 他很像PV
资源一样VolumeSnapshot
是用户想从某个指定volume获取快照的一个请求 , 就像集群中的PVC
一样
VolumeSnapshotContents
are resources in the cluster.VolumeSnapshots
are requests for those resources
当用户想对某个volume进行快照的时候, 可以先创建VolumeSnapshotClass
对象, 之后创建一个卷快照申请,即VolumeSnapshot
, 当有了这个申请之后, 先前创建的VolumeSnapshotClass
就会根据申明来进行卷快照,生成快照内容,即VolumeSnapshotContent
注意:
这个功能是由CSI drivers提供, 有些CSI drivers是支持快照功能的, 当安装了支持卷快照的CSI drivers之后,CSI drivers会自动安装VolumeSnapshotClass
,VolumeSnapshot
和VolumeSnapshotContent
这些api资源,这些api资源是CRD,并不是core api中的一部分, 作为部署过程的一部分,kubernetes为snapshot controller提供了一个名叫external-snapshotter
的sidecar helper container, 它会watches VolumeSnapshot
这个对象,并触发对 CSI 端点的 CreateVolume 和DeleteVolume 操作
有2种提供Volume Snapshot的方法
静态
手动创建出许多
VolumeSnapshotContents
,供VolumeSnapshot
消费动态
当没有
VolumeSnapshotContents
为VolumeSnapshot
消费的时候,系统会自动通过VolumeSnapshotClasses
来为VolumeSnapshot
这个申请来创建volume snapshot, 当然得提前将这个volume snapshot class创建和配置好 , VolumeSnapshot与VolumeSnapshotContent绑定是一对一映射的,如果不存在匹配的VolumeSnapshotContent,VolumeSnapshots将无限期地保持未绑定状态。 VolumeSnapshots将在匹配的VolumeSnapshotContents可用时绑定
volume snapshot/restore示例
###创建VolumeSnapshotClass对象
1 | #创建VolumeSnapshotClass对象 |
###创建VolumeSnapshot对象
1 | #创建VolumeSnapshot对象 |
其中:
- 快照生成器snapshotter是必须指定的字段,用于确定配置volumesnapshot的sci卷插件
###从snapshot中恢复数据到新生的pv对象中
1 | #从snapshot中恢复数据到新生的pv对象中 |