存储卷快照和pvc于pv创建的过程很类似
都是:
PVC-—>StorageClass—->PV
VolumeSnapshot—->VolumeSnapshotClass—–>VolumeSnapshotContent
在kubernetes中用VolumeSnapshotContent 和VolumeSnapshot这样的API资源去为用户和管理员创建卷快照
其中:
VolumeSnapshotContent是从集群中指定的volume中获取的快照, 他很像PV资源一样VolumeSnapshot是用户想从某个指定volume获取快照的一个请求 , 就像集群中的PVC一样
VolumeSnapshotContentsare resources in the cluster.VolumeSnapshotsare 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对象中 |