使用存储快照功能需要用到哪些Kubernetes API资源对象?
A. VolumeSnapshot
B. VolumeSnapshotClass
C. VolumeSnapshotContent
D. PersistentVolumeClaim
正确答案: A B C D
首先,让我们澄清什么是快照。快照是文件系统在特定时间点的状态。您可以保存它并在以后使用它来恢复该特定状态。创建快照的过程几乎是瞬时的。创建快照后,对原始文件系统的所有更改都将写入不同的块。
由于快照数据与原始数据存储在同一位置,因此快照不能替代备份。同时,基于快照而不是实时数据的备份更加一致。这是因为在创建快照时保证所有数据都是最新的。
必须安装 snapshot-controller (所有 CSI driver 的通用组件),并且必须在 Kubernetes 集群中定义以下 CRD 才能使用快照功能:
• VolumeSnapshotClass – 相当于快照的 StorageClass;
• VolumeSnapshotContent – 相当于快照的 PV;
• VolumeSnapshot – 相当于快照的 PVC。
最重要的是,CSI 驱动程序必须支持快照创建并具有相关的 csi-snapshotter controller。
快照在 Kubernetes 中是如何工作的?
他们运作背后的逻辑很简单。有几个实体;VolumeSnapshotClass 描述快照创建的参数,例如 CSI driver。您还可以在那里指定其他设置,例如,快照是否应该是增量的以及它们应该存储在哪里。
创建 VolumeSnapshot 时,您必须指定将为其创建快照的 PersistentVolumeClaim。
拍摄快照时,CSI 驱动程序会在集群中创建一个 VolumeSnapshotContent 资源并设置其参数(通常是资源 ID)。
接下来,快照控制器绑定 VolumeSnapshot 到 VolumeSnapshotContent(就像 PV 和 PVC 一样)。
创建新的 PersistentVolume 时,您可以将先前创建的 VolumeSnapshot 设置为 dataSource 以使用其数据。