CSI 卷克隆

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

简介

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

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

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

使用此功能时,用户需要注意以下几点

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

配置

克隆的配置方式与任何其他 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 进行使用、克隆、快照或删除,而无需考虑其原始 dataSource PVC。这也意味着源不会以任何方式链接到新创建的克隆,它也可以在不影响新创建的克隆的情况下进行修改或删除。

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