Skip to main content
이 제품의 최신 릴리즈를 사용할 수 있습니다.
본 한국어 번역은 사용자 편의를 위해 제공되는 기계 번역입니다. 영어 버전과 한국어 버전이 서로 어긋나는 경우에는 언제나 영어 버전이 우선합니다.

볼륨 그룹 스냅샷 작업

퍼시스턴트 볼륨(PV)의 Kubernetes 볼륨 그룹 스냅샷 NetApp Trident는 여러 볼륨의 스냅샷(볼륨 스냅샷 그룹)을 생성하는 기능을 제공합니다. 이 볼륨 그룹 스냅샷은 동일한 시점에 생성된 여러 볼륨의 복사본을 나타냅니다.

참고 VolumeGroupSnapshot은 베타 API를 사용하는 Kubernetes의 베타 기능입니다. VolumeGroupSnapshot에 필요한 최소 버전은 Kubernetes 1.32입니다.

볼륨 그룹 스냅샷 만들기

볼륨 그룹 스냅샷은 다음 스토리지 드라이버에서 지원됩니다.

  • ontap-san driver - iSCSI 및 FC 프로토콜에만 해당되며 NVMe/TCP 프로토콜에는 해당되지 않습니다.

  • ontap-san-economy - iSCSI 프로토콜에만 해당합니다.

  • ontap-nas

참고 볼륨 그룹 스냅샷은 NetApp ASA r2 또는 AFX 스토리지 시스템에서는 지원되지 않습니다.
시작하기 전에
  • Kubernetes 버전이 K8s 1.32 이상인지 확인합니다.

  • 스냅샷으로 작업하려면 외부 스냅샷 컨트롤러와 CRD(사용자 정의 리소스 정의)가 있어야 합니다. 이는 Kubernetes 오케스트레이터의 책임입니다(예: Kubeadm, GKE, OpenShift).

    Kubernetes 배포에 외부 스냅샷 컨트롤러와 CRD가 포함되어 있지 않은 경우 볼륨 스냅샷 컨트롤러를 배포합니다을 참조하십시오.

    참고 GKE 환경에서 온디맨드 볼륨 그룹 스냅샷을 생성하는 경우 스냅샷 컨트롤러를 생성하지 마십시오. GKE는 기본 제공되는 숨겨진 스냅샷 컨트롤러를 사용합니다.
  • 스냅샷 컨트롤러 YAML에서 CSIVolumeGroupSnapshot 기능 게이트를 'true'로 설정하여 볼륨 그룹 스냅샷이 활성화되도록 합니다.

  • 볼륨 그룹 스냅샷을 생성하기 전에 필요한 볼륨 그룹 스냅샷 클래스를 생성합니다.

  • 모든 PVC/볼륨이 동일한 SVM에 있는지 확인하여 VolumeGroupSnapshot을 생성할 수 있도록 합니다.

단계
  • VolumeGroupSnapshot을 생성하기 전에 VolumeGroupSnapshotClass를 생성하십시오. 자세한 내용은 "VolumeGroupSnapshotClass"를 참조하십시오.

    apiVersion: groupsnapshot.storage.k8s.io/v1beta1
    kind: VolumeGroupSnapshotClass
    metadata:
      name: csi-group-snap-class
      annotations:
        kubernetes.io/description: "Trident group snapshot class"
    driver: csi.trident.netapp.io
    deletionPolicy: Delete
  • 기존 스토리지 클래스를 사용하여 필수 레이블이 포함된 PVC를 생성하거나 기존 PVC에 이러한 레이블을 추가합니다.

    다음 예는 `pvc1-group-snap`을 데이터 소스로 사용하고 `consistentGroupSnapshot: groupA`을 레이블로 사용하여 PVC를 생성합니다. 요구 사항에 따라 레이블 키와 값을 정의합니다.

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: pvc1-group-snap
  labels:
    consistentGroupSnapshot: groupA
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  storageClassName: sc1-1
  • PVC에 지정된 것과 동일한 레이블((consistentGroupSnapshot: groupA)을 사용하여 VolumeGroupSnapshot을 만듭니다.

    이 예에서는 볼륨 그룹 스냅샷을 생성합니다.

apiVersion: groupsnapshot.storage.k8s.io/v1beta1
kind: VolumeGroupSnapshot
metadata:
  name: "vgs1"
  namespace: trident
spec:
  volumeGroupSnapshotClassName: csi-group-snap-class
  source:
    selector:
      matchLabels:
        consistentGroupSnapshot: groupA

그룹 스냅샷을 사용하여 볼륨 데이터 복구

볼륨 그룹 스냅샷의 일부로 생성된 개별 스냅샷을 사용하여 개별 영구 볼륨을 복원할 수 있습니다. 볼륨 그룹 스냅샷을 하나의 단위로 복구할 수 없습니다.

볼륨 스냅샷 복원 ONTAP CLI를 사용하여 볼륨을 이전 스냅샷에 기록된 상태로 복원합니다.

cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
참고 스냅샷 복사본을 복원하면 기존 볼륨 구성이 덮어쓰여집니다. 스냅샷 복사본이 생성된 후 볼륨 데이터에 대한 변경 사항은 손실됩니다.

스냅샷에서 볼륨 제자리 복원

Trident는 TridentActionSnapshotRestore (TASR) CR을 사용하여 스냅샷에서 신속하게 제자리 볼륨 복원을 제공합니다. 이 CR은 명령형 Kubernetes 작업으로 작동하며 작업 완료 후에는 지속되지 않습니다.

자세한 내용은 "스냅샷에서 볼륨 제자리 복원"를 참조하십시오.

연결된 그룹 스냅샷이 있는 PV 삭제

그룹 볼륨 스냅샷을 삭제할 때:

  • VolumeGroupSnapshots는 그룹 전체로 삭제할 수 있지만, 그룹 내의 개별 스냅샷은 삭제할 수 없습니다.

  • PersistentVolumes가 해당 PersistentVolume에 대한 스냅샷이 존재하는 동안 삭제되면 Trident는 해당 볼륨을 "삭제 중" 상태로 이동합니다. 이는 볼륨을 안전하게 제거하기 전에 스냅샷을 먼저 제거해야 하기 때문입니다.

  • 그룹 스냅샷을 사용하여 클론을 생성한 후 해당 그룹을 삭제하려는 경우, 클론 분할 작업이 시작되며 분할이 완료될 때까지 그룹을 삭제할 수 없습니다.

볼륨 스냅샷 컨트롤러를 배포합니다

Kubernetes 배포판에 스냅샷 컨트롤러와 CRD가 포함되어 있지 않은 경우 다음과 같이 배포할 수 있습니다.

단계
  1. 볼륨 스냅샷 CRD를 생성합니다.

    cat snapshot-setup.sh
    #!/bin/bash
    # Create volume snapshot CRDs
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotclasses.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml
  2. 스냅샷 컨트롤러를 생성합니다.

    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
    kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
    참고 필요한 경우 `deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml`를 열고 `namespace`를 네임스페이스로 업데이트하십시오.