CSI 卷克隆

本文档描述了在 Kubernetes 中克隆现有 CSI 卷的概念。建议熟悉

介绍

The CSI 卷克隆功能增加了对在 dataSource 字段中指定现有 PVC 的支持,以指示用户希望克隆一个

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

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

使用此功能时,用户需要注意以下事项。

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

配置

克隆就像任何其他 PVC 一样配置,除了添加一个 dataSource,该 dataSource 引用同一个命名空间中的现有 PVC。

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

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

用法

新 PVC 可用后,克隆的 PVC 将像其他 PVC 一样使用。从此时起,还预计新创建的 PVC 是一个独立的对象。它可以独立使用、克隆、快照或删除,而不考虑其原始 dataSource PVC。这也意味着源与新创建的克隆之间没有任何关联,它也可以修改或删除,而不会影响新创建的克隆。

上次修改于 2023 年 6 月 1 日太平洋标准时间下午 9:14:在 storage/ 中调整行换行 (2886944017)