Kubernetes v1.36: 볼륨 그룹 스냅샷을 GA로 이동
Source: Kubernetes Blog
볼륨 그룹 스냅샷 – Kubernetes v1.36에서 GA
볼륨 그룹 스냅샷은 Kubernetes v1.27에서 Alpha 기능으로 도입되었으며, v1.32에서 Beta로, v1.34에서 두 번째 Beta로 전환되었습니다.
Kubernetes v1.36 릴리스에서 볼륨 그룹 스냅샷 지원이 **General Availability (GA)**에 도달했음을 알려드리게 되어 기쁩니다.
작동 방식
- 이 기능은 그룹 스냅샷용 확장 API 집합에 의존합니다.
- 사용자는 볼륨 집합에 대해 크래시 일관성 스냅샷을 생성할 수 있습니다.
- Kubernetes는 라벨 셀렉터를 사용하여 여러
PersistentVolumeClaim(PVC) 객체를 그룹화하고 스냅샷을 수행합니다. - 목표는 그 스냅샷 집합을 새로운 볼륨에 복원하고 크래시 일관성 복구 지점에서 워크로드를 복구하는 것입니다.
Note: 이 기능은 CSI 볼륨 드라이버에만 지원됩니다.
볼륨 그룹 스냅샷 개요
일부 스토리지 시스템은 동일한 시점에 다중 볼륨의 충돌 일관성 스냅샷을 생성할 수 있습니다. 그룹 스냅샷:
- 여러 볼륨에서 동시에 만든 복사본을 나타냅니다.
- 새 볼륨을 재수화(스냅샷 데이터로 미리 채워짐) 하거나 기존 볼륨을 이전 상태로 복원하는 데 사용할 수 있습니다.
왜 Kubernetes에 볼륨 그룹 스냅샷을 추가해야 할까요?
Kubernetes는 단일 영구 볼륨을 보호하기 위한 강력한 VolumeSnapshot API를 이미 제공하고 있습니다. 하지만 많은 애플리케이션이 여러 볼륨(예: 데이터 + 로그)을 사용합니다. 서로 다른 시점에 개별 스냅샷을 찍으면 복원 시 애플리케이션 상태가 일관되지 않을 수 있습니다.
- 일관된 그룹 스냅샷은 그룹 내 모든 볼륨에 대해 쓰기 순서 일관성을 제공합니다.
- 애플리케이션을 정지시키거나 순차적으로 스냅샷을 찍을 필요가 없어 시간 절약과 정지 불가능한 경우를 피할 수 있습니다.
볼륨 그룹 스냅샷을 위한 Kubernetes API
그룹 스냅샷을 관리하기 위해 세 가지 API 종류(CRD)가 사용됩니다:
| API 종류 | 목적 |
|---|---|
| VolumeGroupSnapshot | 사용자가(또는 자동화) 여러 PVC의 스냅샷을 요청하기 위해 생성됩니다. |
| VolumeGroupSnapshotContent | 스냅샷 컨트롤러가 동적으로 생성된 VolumeGroupSnapshot을 위해 생성합니다. 프로비저닝된 그룹 스냅샷에 대한 정보를 보관하며 해당 VolumeGroupSnapshot과 일대일로 바인딩됩니다. |
| VolumeGroupSnapshotClass | 클러스터 관리자가 그룹 스냅샷 생성 방법(드라이버, 삭제 정책 등)을 정의합니다. |
GA 릴리스에서는 이 API들이 groupsnapshot.storage.k8s.io/v1 로 승격되었습니다.
GA에서 새로 나온 내용은?
VolumeGroupSnapshot,VolumeGroupSnapshotContent, 및VolumeGroupSnapshotClass에 대한 API 버전은 이제groupsnapshot.storage.k8s.io/v1입니다.- 베타 피드백을 기반으로 안정성이 향상되고 버그가 수정되었으며,
v1beta2에서의 개선을 포함해 정확한restoreSize보고가 가능합니다.
Kubernetes 볼륨 그룹 스냅샷 사용 방법
1. 새 그룹 스냅샷 생성
-
그룹화하려는 PVC에 라벨 지정
kubectl label pvc pvc-0 group=myGroup # persistentvolumeclaim/pvc-0 labeled kubectl label pvc pvc-1 group=myGroup # persistentvolumeclaim/pvc-1 labeled -
VolumeGroupSnapshot정의 (동적 프로비저닝을 위해서는 셀렉터가 필요합니다):apiVersion: groupsnapshot.storage.k8s.io/v1 kind: VolumeGroupSnapshot metadata: name: snapshot-daily-20260422 namespace: demo-namespace spec: volumeGroupSnapshotClassName: csi-groupSnapclass source: selector: matchLabels: group: myGroup -
VolumeGroupSnapshotClass생성 (동적 프로비저닝에 필요):apiVersion: groupsnapshot.storage.k8s.io/v1 kind: VolumeGroupSnapshotClass metadata: name: csi-groupSnapclass driver: example.csi.k8s.io deletionPolicy: Delete
2. 그룹 스냅샷에서 복원
그룹에 있는 각 볼륨에 대해 VolumeGroupSnapshot에서 가져온 VolumeSnapshot을 사용하도록 새로운 PVC를 요청합니다:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: examplepvc-restored-2026-04-22
namespace: demo-namespace
spec:
storageClassName: example-sc
dataSource:
name: snapshot-0962a745b2bf930bb385b7b50c9b08af471f1a16780726de19429dd9c94eaca0
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
accessModes:
- ReadWriteOncePod
resources:
requests:
storage: 100Mi
복원해야 하는 각 볼륨에 대해 PVC 정의를 반복합니다.
그룹 스냅샷 지원을 스토리지 벤더로 추가
볼륨 그룹 스냅샷 기능을 구현하려면 CSI 드라이버가 다음을 수행해야 합니다:
- 새 그룹 컨트롤러 서비스를 구현합니다.
- 다음 RPC를 지원합니다:
CreateVolumeGroupSnapshotDeleteVolumeGroupSnapshotGetVolumeGroupSnapshot
- 능력
CREATE_DELETE_GET_VOLUME_GROUP_SNAPSHOT을 광고합니다.
CSI 사양 및 Kubernetes‑CSI 드라이버 개발자 가이드를 참조하여 자세한 구현 단계를 확인하십시오.
자세히 알아보기
- Design spec 볼륨 그룹 스냅샷 기능에 대한 설계 사양.
- Code repository 볼륨 그룹 스냅샷 API 및 컨트롤러용 코드 저장소.
- CSI documentation 그룹 스냅샷 지원에 대한 CSI 문서.
그룹 스냅샷 기능
어떻게 참여할 수 있나요?
이 프로젝트는 모든 Kubernetes 프로젝트와 마찬가지로 다양한 배경을 가진 많은 기여자들의 협업과 노력의 결과물입니다. SIG Storage를 대표하여, 프로젝트가 GA에 도달하도록 수년간 힘을 보태준 모든 기여자들에게 진심으로 감사드립니다:
- Ben Swartzlander (bswartz)
- Cici Huang (cici37)
- Darshan Murthy (darshansreenivas)
- Hemant Kumar (gnufied)
- James Defelice (jdef)
- Jan Šafránek (jsafrane)
- Madhu Rajanna (Madhu-1)
- Manish M Yathnalli (manishym)
- Michelle Au (msau42)
- Niels de Vos (nixpanic)
- Leonardo Cecchi (leonardoce)
- Rakshith R (Rakshith‑R)
- Raunak Shah (RaunakShah)
- Saad Ali (saad-ali)
- Wei Duan (duanwei33)
- Xing Yang (xing‑yang)
- Yati Padia (yati1998)
시작하기
- Kubernetes Storage Special Interest Group (SIG)에 참여하기 – CSI 설계 및 개발이나 Kubernetes 스토리지 시스템의 어느 부분에든 관심 있는 새로운 기여자를 언제나 환영합니다.
- Data Protection Working Group 회의에 참석하기 – 새로운 참석자도 우리의 논의에 자유롭게 참여할 수 있습니다.
질문이 있거나 참여하고 싶다면 SIG 메일링 리스트나 Slack 채널로 언제든지 연락 주세요!