볼륨 스냅샷

볼륨 스냅샷 (volume-snapshots)

출처: 쿠버네티스 공식 문서 — Volume Snapshots

쿠버네티스에서 VolumeSnapshot은 스토리지 시스템에 있는 볼륨의 스냅샷을 나타내요. 이 문서는 쿠버네티스 영구 볼륨(Persistent Volumes)에 이미 익숙하다고 가정해요.

소개 (Introduction)

API 리소스 PersistentVolumePersistentVolumeClaim이 사용자와 관리자를 위해 볼륨을 프로비저닝하는 데 쓰이는 것과 비슷하게, VolumeSnapshotContentVolumeSnapshot API 리소스는 사용자와 관리자를 위해 볼륨 스냅샷을 만들도록 제공돼요.

VolumeSnapshotContent는 관리자가 프로비저닝한, 클러스터 안 볼륨에서 가져온 스냅샷이에요. PersistentVolume이 클러스터 리소스인 것처럼, 이것도 클러스터 안의 리소스예요.

VolumeSnapshot은 사용자가 볼륨의 스냅샷을 요청하는 것이에요. PersistentVolumeClaim과 비슷하다고 보면 돼요.

VolumeSnapshotClassVolumeSnapshot에 속하는 서로 다른 속성들을 지정할 수 있게 해줘요. 이 속성들은 스토리지 시스템에서 같은 볼륨에서 가져온 스냅샷끼리도 서로 다를 수 있어서, PersistentVolumeClaim의 같은 StorageClass로는 표현할 수 없어요.

볼륨 스냅샷은 쿠버네티스 사용자에게 특정 시점에 볼륨의 내용을 복사하는 표준화된 방법을 제공해요. 완전히 새로운 볼륨을 만들 필요는 없죠. 예를 들어 데이터베이스 관리자가 편집이나 삭제 작업을 하기 전에 데이터베이스를 백업하는 데 이 기능을 쓸 수 있어요.

참고 (Note)

  • VolumeSnapshot, VolumeSnapshotContent, VolumeSnapshotClass API 오브젝트는 CRD이며, 코어 API의 일부가 아니에요.
  • VolumeSnapshot 지원은 CSI 드라이버에서만 가능해요.
  • VolumeSnapshot 배포 과정의 일부로, 쿠버네티스 팀은 CSI 드라이버 문서에서 확인할 수 있는 구현을 제공해요.
  • CRD와 스냅샷 컨트롤러 설치의 책임은 쿠버네티스 배포본(distribution)에 있어요.
  • 여러 볼륨의 그룹 스냅샷을 만드는 같은 고급 사용 사례는 외부 CSI Volume Group Snapshot 문서를 참고하세요.

볼륨 스냅샷과 볼륨 스냅샷 콘텐츠의 수명주기 (Lifecycle of a volume snapshot and volume snapshot content)

바인딩 (Binding)

사전-프로비저닝(pre-provisioned) 바인딩의 경우, 요청된 VolumeSnapshotContent 오브젝트가 생성될 때까지 VolumeSnapshot은 바인딩되지 않은 상태로 남아 있어요.

VolumeSnapshots

VolumeSnapshot은 spec과 status를 포함해요.

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: new-snapshot-test
spec:
  volumeSnapshotClassName: csi-hostpath-snapclass
  source:
    persistentVolumeClaimName: pvc-test

persistentVolumeClaimName은 스냅샷의 PersistentVolumeClaim 데이터 소스 이름이에요. 이 필드는 스냅샷을 동적으로 프로비저닝할 때 필수예요.

볼륨 스냅샷은 volumeSnapshotClassName 속성으로 특정 VolumeSnapshotClass의 이름을 지정해서 특정 class를 요청할 수 있어요. 아무것도 설정하지 않으면, 사용 가능할 때 기본 class가 사용돼요.

사전-프로비저닝 스냅샷의 경우, 아래 예시처럼 스냅샷의 소스로 volumeSnapshotContentName을 지정해야 해요. volumeSnapshotContentName 소스 필드는 사전-프로비저닝 스냅샷에 필수예요.

apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: test-snapshot
spec:
  source:
    volumeSnapshotContentName: test-content

스냅샷에서 볼륨 프로비저닝하기 (Provisioning Volumes from Snapshots)

PersistentVolumeClaim 오브젝트의 dataSource 필드를 사용해서, 스냅샷의 데이터로 미리 채워진 새 볼륨을 프로비저닝할 수 있어요.

자세한 내용은 Volume Snapshot 및 볼륨을 스냅샷에서 복원을 참고하세요.