볼륨 스냅샷 클래스
볼륨 스냅샷 클래스 (volume-snapshot-classes)
이 문서는 Kubernetes의 VolumeSnapshotClass 개념을 설명해요. 볼륨 스냅샷과 스토리지 클래스에 대한 친숙함이 권장돼요.
소개
StorageClass가 관리자에게 볼륨을 프로비저닝할 때 제공하는 스토리지의 '클래스'를 설명하는 방법을 제공하는 것처럼, VolumeSnapshotClass도 볼륨 스냅샷을 프로비저닝할 때 스토리지의 '클래스'를 설명하는 방법을 제공해요.
VolumeSnapshotClass 리소스
각 VolumeSnapshotClass는 driver, deletionPolicy, parameters 필드를 포함해요. 이 필드들은 해당 클래스에 속하는 VolumeSnapshot이 동적으로 프로비저닝되어야 할 때 사용돼요.
VolumeSnapshotClass 객체의 이름은 중요하며, 사용자가 특정 클래스를 요청하는 방법이에요. 관리자는 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를 지정하지 않고 VolumeSnapshot을 만들면, Kubernetes는 PVC의 StorageClass의 CSI 드라이버와 일치하는 CSI 드라이버를 가진 기본 VolumeSnapshotClass를 자동으로 선택해요.
Driver
볼륨 스냅샷 클래스는 VolumeSnapshot을 프로비저닝하는 데 사용되는 CSI 볼륨 플러그인을 결정하는 driver를 가져요. 이 필드는 반드시 지정해야 해요.
DeletionPolicy
볼륨 스냅샷 클래스는 deletionPolicy를 가져요. 이것은 바인딩된 VolumeSnapshot 객체가 삭제될 때 VolumeSnapshotContent에 어떤 일이 일어나는지 구성할 수 있게 해줘요. 볼륨 스냅샷 클래스의 deletionPolicy는 Retain 또는 Delete가 될 수 있어요. 이 필드는 반드시 지정해야 해요.