CSI 볼륨 클로닝
CSI 볼륨 클로닝 (CSI Volume Cloning)
이 문서는 Kubernetes에서 기존 CSI 볼륨을 복제(clone)하는 개념을 설명합니다. 볼륨(Volumes)에 대한 이해가 권장됩니다.
출처: 문서
소개 (Introduction)
CSI Volume Cloning 기능은 dataSource 필드에 기존 PVC를 지정해 사용자가 볼륨을 복제하려는 것을 나타낼 수 있게 해줍니다.
**클론(Clone)**은 기존 Kubernetes 볼륨의 중복본으로, 표준 볼륨처럼 소비될 수 있어요. 유일한 차이는 프로비저닝 시 "새" 빈 볼륨을 만드는 대신, 백엔드 장치가 지정된 볼륨의 정확한 복제본을 만든다는 점입니다.
Kubernetes API 관점에서 클로닝 구현은 새 PVC 생성 중에 기존 PVC를 dataSource로 지정할 수 있는 능력을 추가합니다. 소스 PVC는 바인딩되어 있고 사용 가능(사용 중이 아님)해야 해요.
이 기능을 사용할 때 다음 사항을 알아야 합니다.
- 클로닝 지원(
VolumePVCDataSource)은 CSI 드라이버에서만 사용할 수 있습니다. - 클로닝 지원은 동적 프로비저너(dynamic provisioner)에서만 사용할 수 있습니다.
- CSI 드라이버가 볼륨 클로닝 기능을 구현했을 수도 있고 아닐 수도 있습니다.
- PVC는 대상 PVC와 같은 네임스페이스에 있을 때만 클론할 수 있습니다(소스와 대상은 같은 네임스페이스여야 함).
- 클로닝은 다른 스토리지 클래스에서 지원됩니다. 대상 볼륨은 소스와 같거나 다른 스토리지 클래스일 수 있어요. 기본 스토리지 클래스를 사용하고 스펙에서
storageClassName을 생략할 수 있습니다. - 클로닝은 같은
VolumeMode설정을 사용하는 두 볼륨 사이에서만 수행할 수 있습니다(블록 모드 볼륨을 요청하면 소스도 반드시 블록 모드여야 함).
프로비저닝 (Provisioning)
클론은 같은 네임스페이스의 기존 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
참고:
spec.resources.requests.storage에 대한 용량 값을 반드시 지정해야 하며, 지정한 값은 소스 볼륨의 용량과 같거나 커야 합니다.
결과는 clone-of-pvc-1이라는 이름의 새 PVC로, 지정된 소스 pvc-1과 정확히 같은 내용을 가져요.
사용 (Usage)
새 PVC를 사용할 수 있게 되면 복제된 PVC는 다른 PVC처럼 소비됩니다. 이 시점에 새로 생성된 PVC가 독립적인 객체라는 것도 기대할 수 있어요. 원래 dataSource PVC를 고려하지 않고 독립적으로 소비, 클론, 스냅샷, 삭제할 수 있습니다. 이는 소스가 새로 생성된 클론과 어떤 식으로도 연결되지 않는다는 뜻이기도 해요. 소스는 새로 생성된 클론에 영향을 주지 않고 수정하거나 삭제할 수도 있습니다.