卷快照类

本文档介绍了 Kubernetes 中 VolumeSnapshotClass 的概念。建议熟悉卷快照存储类

介绍

正如 StorageClass 为管理员提供了一种在配置卷时描述他们所提供的存储“类”的方式一样,VolumeSnapshotClass 提供了一种在配置卷快照时描述存储“类”的方式。

VolumeSnapshotClass 资源

每个 VolumeSnapshotClass 都包含 driverdeletionPolicyparameters 字段,这些字段在需要动态配置属于该类的 VolumeSnapshot 时使用。

VolumeSnapshotClass 对象的名称很重要,用户可以通过它请求特定的类。管理员在首次创建 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,该 VolumeSnapshotClass 的 CSI 驱动与 PVC 的 StorageClass 的 CSI 驱动匹配。

这种行为允许多个默认的 VolumeSnapshotClass 对象在集群中并存,只要每个对象都与唯一的 CSI 驱动关联。

请始终确保每个 CSI 驱动只有一个默认的 VolumeSnapshotClass。如果使用相同的 CSI 驱动创建了多个默认的 VolumeSnapshotClass 对象,VolumeSnapshot 的创建将失败,因为 Kubernetes 无法确定要使用哪一个。

驱动

卷快照类有一个驱动,它决定了使用哪个 CSI 卷插件来配置 VolumeSnapshot。此字段必须指定。

删除策略

卷快照类有一个删除策略。它允许您配置当它所绑定的 VolumeSnapshot 对象要被删除时,VolumeSnapshotContent 会发生什么。卷快照类的 deletionPolicy 可以是 RetainDelete。此字段必须指定。

如果 deletionPolicy 是 Delete,那么底层的存储快照将与 VolumeSnapshotContent 对象一起被删除。如果 deletionPolicy 是 Retain,那么底层的快照和 VolumeSnapshotContent 都将保留。

参数

卷快照类具有描述属于卷快照类的卷快照的参数。根据 driver 的不同,可能会接受不同的参数。

最后修改于 2025 年 1 月 9 日太平洋标准时间晚上 8:26:更新 VolumeSnapshotClass (c0c456446e)