볼륨 스냅샷 클래스
볼륨 스냅샷 클래스 (Volume Snapshot Classes)
이 문서는 Kubernetes의 VolumeSnapshotClass 개념을 설명합니다. 볼륨 스냅샷(volume snapshots)과 스토리지 클래스(storage classes)에 대한 이해가 권장됩니다.
출처: 문서
소개 (Introduction)
StorageClass가 관리자가 볼륨을 프로비저닝할 때 제공하는 스토리지의 "클래스"를 설명하는 방법을 제공하듯이, VolumeSnapshotClass는 볼륨 스냅샷을 프로비저닝할 때 스토리지의 "클래스"를 설명하는 방법을 제공해요.
VolumeSnapshotClass 리소스 (The VolumeSnapshotClass Resource)
각 VolumeSnapshotClass는 driver, deletionPolicy, parameters 필드를 포함하며, 이 클래스에 속한 VolumeSnapshot이 동적으로 프로비저닝되어야 할 때 사용됩니다.
VolumeSnapshotClass 객체의 이름은 중요하며, 사용자가 특정 클래스를 요청하는 방법이에요. 관리자는 VolumeSnapshotClass 객체를 처음 만들 때 클래스의 이름과 다른 매개변수를 설정하며, 생성된 후에는 객체를 업데이트할 수 없습니다.
참고: CRD 설치의 책임은 Kubernetes 배포(distribution)에 있습니다. 필요한 CRD가 없으면 VolumeSnapshotClass 생성은 실패합니다.
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-hostpath-snapclass
driver: hostpath.csi.k8s.io
deletionPolicy: Delete
parameters:
관리자는 어떤 특정 클래스도 요청하지 않는 VolumeSnapshot이 바인딩할 기본 VolumeSnapshotClass를 지정할 수 있어요. snapshot.storage.kubernetes.io/is-default-class: "true" 어노테이션을 추가하면 됩니다.
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: csi-hostpath-snapclass
annotations:
snapshot.storage.kubernetes.io/is-default-class: "true"
driver: hostpath.csi.k8s.io
deletionPolicy: Delete
parameters:
여러 CSI 드라이버가 있다면 각각에 대해 기본 VolumeSnapshotClass를 지정할 수 있어요.
VolumeSnapshotClass 종속성 (VolumeSnapshotClass dependencies)
VolumeSnapshotClass를 지정하지 않고 VolumeSnapshot을 만들면, Kubernetes는 PVC의 StorageClass의 CSI 드라이버와 일치하는 CSI 드라이버를 가진 기본 VolumeSnapshotClass를 자동으로 선택합니다.
이 동작 덕분에 각각이 고유한 CSI 드라이버와 연결돼 있다면 여러 기본 VolumeSnapshotClass 객체가 클러스터에 공존할 수 있어요.
각 CSI 드라이버에 대해 기본 VolumeSnapshotClass가 하나만 있도록 항상 보장하세요. 같은 CSI 드라이버를 사용해 여러 기본 VolumeSnapshotClass 객체가 생성되면, Kubernetes가 어떤 것을 사용할지 결정할 수 없어 VolumeSnapshot 생성이 실패합니다.
드라이버 (Driver)
볼륨 스냅샷 클래스에는 VolumeSnapshot 프로비저닝에 사용할 CSI 볼륨 플러그인을 결정하는 드라이버가 있습니다. 이 필드는 반드시 지정해야 해요.
삭제 정책 (DeletionPolicy)
볼륨 스냅샷 클래스에는 deletionPolicy가 있습니다. 이를 통해 바인딩된 VolumeSnapshot 객체가 삭제될 때 VolumeSnapshotContent에 무슨 일이 일어나는지 구성할 수 있어요. 볼륨 스냅샷 클래스의 deletionPolicy는 Retain 또는 Delete일 수 있습니다. 이 필드는 반드시 지정해야 해요.
deletionPolicy가 Delete이면 기저 스토리지 스냅샷이 VolumeSnapshotContent 객체와 함께 삭제됩니다. deletionPolicy가 Retain이면 기저 스냅샷과 VolumeSnapshotContent가 모두 유지됩니다.
매개변수 (Parameters)
볼륨 스냅샷 클래스에는 그 볼륨 스냅샷 클래스에 속한 볼륨 스냅샷을 설명하는 매개변수가 있습니다. 드라이버에 따라 허용되는 매개변수가 다를 수 있어요.