提示:学习本篇教程前请先参阅《Kubernetes卷》。
一、CSI卷克隆
CSI卷克隆功能现在支持通过dataSource字段指定要克隆的已存在的PVC,以创建已有Kubernetes卷的副本。这个克隆的副本可以像任何常规卷一样使用,并且与源PVC完全相同。不同之处在于,后端设备将创建指定完全相同的副本,而不是创建一个“新的”空卷。
从Kubernetes API的角度来看,实现克隆的方式只是在创建新的PVC时增加了指定现有PVC作为数据源的能力。源PVC必须处于已绑定状态并且可用(即不在使用中)。
在使用CSI卷克隆功能时,需要注意以下几点事项:
1、克隆支持(VolumePVCDataSource)仅适用于 CSI 驱动。
2、克隆支持仅适用于 动态供应器。
3、CSI驱动可能会实现或未实现卷克隆功能
4、要进行克隆操作,源PVC和目标PVC必须位于同一命名空间。即源PVC和目标PVC必须在相同的命名空间下。
5、克隆操作支持使用不同的存储类进行克隆。
- 目标卷和源卷可以是相同的存储类,也可以不同;
- 可以使用默认的存储类,也可以在 spec 中省略 storageClassName 字段。
6、克隆操作只能在具有相同VolumeMode设置的卷之间进行克隆。例如,如果要克隆一个块存储模式的卷,源卷也必须是块存储模式。
二、制备
克隆卷与其他任何 PVC 一样配置,除了需要增加 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
以上结果是一个名称为 clone-of-pvc-1 的新 PVC 与指定的源 pvc-1 拥有相同的内容。
注意:在使用CSI卷克隆功能时,确实需要为spec.resources.requests.storage字段指定一个值,并且该值必须大于或等于源卷的容量。
三、使用克隆的PVC
一旦新的PVC可用,被克隆的PVC就可以像其他PVC一样使用。可以将其视为一个独立的对象,具有自己的数据和属性。
用户可以独立地使用、克隆、快照或删除新创建的PVC,而无需考虑其原始数据源PVC。源PVC与新创建的克隆PVC之间没有任何链接关系,用户可以对源PVC进行修改或删除操作,而不会影响到新创建的克隆PVC的数据或状态。