卷快照类
本文档介绍了 Kubernetes 中的 VolumeSnapshotClass(卷快照类)概念。建议先熟悉卷快照和StorageClass(存储类)。
介绍
正如 StorageClass 提供了一种供管理员在配置卷时描述其提供的存储的“类”的方式一样,VolumeSnapshotClass 提供了一种在配置卷快照时描述存储的“类”的方式。
VolumeSnapshotClass 资源
每个 VolumeSnapshotClass 都包含 driver
、deletionPolicy
和 parameters
字段,这些字段在需要动态配置属于该类的 VolumeSnapshot 时使用。
VolumeSnapshotClass 对象的名称很重要,用户可以通过它请求特定的类。管理员在首次创建 VolumeSnapshotClass 对象时设置类的名称和其他参数,对象创建后就无法更新。
说明
CRD 的安装是 Kubernetes 发行版(Distribution)的责任。如果没有必要的 CRD,则 VolumeSnapshotClass 的创建会失败。apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-hostpath-snapclass
driver: hostpath.csi.k8s.io
deletionPolicy: Delete
parameters:
管理员可以通过添加 snapshot.storage.kubernetes.io/is-default-class: "true"
注解,为不请求绑定任何特定类的 VolumeSnapshot 指定一个默认的 VolumeSnapshotClass。
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-hostpath-snapclass
annotations:
snapshot.storage.kubernetes.io/is-default-class: "true"
driver: hostpath.csi.k8s.io
deletionPolicy: Delete
parameters:
如果存在多个 CSI 驱动,则可以为每个驱动指定一个默认的 VolumeSnapshotClass。
VolumeSnapshotClass 依赖关系
当你在创建 VolumeSnapshot 时未指定 VolumeSnapshotClass,Kubernetes 会自动选择一个默认的 VolumeSnapshotClass,该类的 CSI 驱动与 PVC 的 StorageClass 的 CSI 驱动匹配。
这种行为允许多个默认的 VolumeSnapshotClass 对象在集群中共存,只要每个对象都与一个唯一的 CSI 驱动相关联。
务必确保每个 CSI 驱动只有一个默认的 VolumeSnapshotClass。如果使用同一个 CSI 驱动创建了多个默认 VolumeSnapshotClass 对象,Kubernetes 将无法确定使用哪一个,从而导致 VolumeSnapshot 创建失败。
驱动
卷快照类有一个驱动程序,用于确定使用哪个 CSI 卷插件来配置 VolumeSnapshot。此字段必须指定。
删除策略
卷快照类有一个删除策略(deletionPolicy)。它使你能够配置当与其绑定的 VolumeSnapshot 对象被删除时,VolumeSnapshotContent 会发生什么。卷快照类的删除策略可以是 Retain
或 Delete
。此字段必须指定。
如果删除策略是 Delete
,则底层存储快照将随 VolumeSnapshotContent 对象一起删除。如果删除策略是 Retain
,则底层快照和 VolumeSnapshotContent 都将保留。
参数
卷快照类具有描述属于该卷快照类的卷快照的参数。根据 driver
的不同,可能会接受不同的参数。