CSI 卷克隆

本文档介绍了在 Kubernetes 中克隆现有 CSI Volume 的概念。建议您熟悉Volume

介绍

CSI Volume 克隆特性添加了对在 dataSource 字段中指定现有 PVC 的支持,以表示用户想要克隆一个 Volume。

克隆被定义为现有 Kubernetes Volume 的副本,可以像任何标准 Volume 一样被使用。唯一的区别在于,在创建 Volume 时,后端设备创建的是指定 Volume 的精确副本,而不是创建一个“新的”空 Volume。

从 Kubernetes API 的角度来看,克隆的实现增加了在创建新的 PVC 时将现有 PVC 指定为 dataSource 的能力。源 PVC 必须是已绑定的且可用的(未被使用)。

使用此特性时,用户需要注意以下事项:

  • 克隆支持(VolumePVCDataSource)仅对 CSI 驱动程序可用。
  • 克隆支持仅对动态 Provisioner 可用。
  • CSI 驱动程序可能实现也可能未实现 Volume 克隆功能。
  • 仅当源 PVC 与目标 PVC 位于同一命名空间中时(源和目标必须在同一命名空间中),才能克隆该 PVC。
  • 支持使用不同的 StorageClass 进行克隆。
    • 目标 Volume 可以与源 Volume 使用相同的或不同的 StorageClass。
    • 可以使用默认 StorageClass,并且可以在 spec 中省略 storageClassName。
  • 只能在两个使用相同 VolumeMode 设置的 Volume 之间执行克隆(如果你请求块模式 Volume,则源 Volume 也必须是块模式)

制备

克隆与其他任何 PVC 一样被制备,不同之处在于需要添加一个引用同一命名空间中现有 PVC 的 dataSource。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
    name: clone-of-pvc-1
    namespace: myns
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: cloning
  resources:
    requests:
      storage: 5Gi
  dataSource:
    kind: PersistentVolumeClaim
    name: pvc-1

结果是创建一个名为 clone-of-pvc-1 的新 PVC,其内容与指定的源 pvc-1 完全相同。

用法

新的 PVC 可用后,克隆的 PVC 的使用方式与任何其他 PVC 相同。此时也预期新创建的 PVC 是一个独立对象。它可以被独立地使用、克隆、创建快照或删除,而无需考虑其原始的 dataSource PVC。这也意味着源 PVC 与新创建的克隆之间没有任何关联,源 PVC 也可以被修改或删除,而不会影响新创建的克隆。

上次修改时间:2023 年 6 月 1 日晚上 9:14 PST:tweak line wrappings in storage/ (2886944017)