볼륨 스냅샷 만들기

이 문서에서는 컨테이너 애플리케이션의 특정 시점에 스토리지 볼륨의 사본 또는 스냅샷을 만드는 방법을 설명합니다. 볼륨 스냅샷을 사용하면 볼륨을 이전 상태로 되돌리거나 새 볼륨을 프로비저닝할 수 있습니다.

이 문서는 조직의 애플리케이션 워크로드를 만드는 애플리케이션 운영자 그룹 내 개발자를 대상으로 합니다. 자세한 내용은 GDC 에어 갭 문서의 대상 독자를 참고하세요.

시작하기 전에

이 문서의 작업을 완료하려면 필요한 권한을 요청하고 환경을 준비해야 합니다.

IAM 역할 요청

볼륨 스냅샷을 만드는 데 필요한 권한을 얻으려면 특정 역할이 있어야 합니다. 필요한 역할은 조직 범위 공유 클러스터 또는 프로젝트 범위 표준 클러스터 내에서 작업하는지 여부에 따라 다릅니다. 자세한 내용은 Kubernetes 클러스터 구성을 참고하세요.

공유 클러스터 역할

공유 클러스터에서 볼륨 스냅샷을 만들거나 삭제하거나 수정하거나 보려면 프로젝트 IAM 관리자에게 네임스페이스 관리자 (namespace-admin) 역할을 부여해 달라고 요청하세요. 이 역할은 프로젝트 네임스페이스에 바인딩됩니다.

표준 클러스터 역할

표준 클러스터에서 볼륨 스냅샷을 만들거나 삭제하거나 수정하거나 보려면 프로젝트 IAM 관리자에게 클러스터 개발자(cluster-developer) 역할을 부여해 달라고 요청하세요. 이 역할은 프로젝트 네임스페이스에 바인딩됩니다.

개발 환경 준비

API를 사용하여 Kubernetes 클러스터 에 대해 명령어를 실행하려면 다음 리소스가 있어야 합니다.

  • Kubernetes 클러스터 이름을 찾거나 플랫폼 관리자 그룹의 구성원에게 클러스터 이름이 무엇인지 물어봅니다.

  • 로그인하고 생성합니다 Kubernetes 클러스터의 kubeconfig 파일.

  • Kubernetes 클러스터의 kubeconfig 경로를 사용하여 이 안내의 KUBERNETES_CLUSTER_KUBECONFIG를 바꿉니다.

볼륨 스냅샷 찍기

PersistentVolumeClaim 객체의 스냅샷을 찍으려면 VolumeSnapshot 객체를 만듭니다. 시스템은 데이터 일관성을 보장하지 않습니다. 스냅샷을 찍기 전에 애플리케이션을 일시중지하고 데이터를 플러시합니다.

  1. VolumeSnapshot 커스텀 리소스를 만듭니다.

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: snapshot.storage.k8s.io/v1
    kind: VolumeSnapshot
    metadata:
      name: VOLUME_SNAPSHOT_NAME
    spec:
      source:
        persistentVolumeClaimName: PVC_NAME
    EOF
    

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_KUBECONFIG: 클러스터의 kubeconfig 파일입니다.

    • NAMESPACE: 볼륨 스냅샷을 만들 네임스페이스입니다. 공유 클러스터의 경우 프로젝트 네임스페이스여야 합니다. 표준 클러스터의 경우 모든 네임스페이스일 수 있습니다.

    • VOLUME_SNAPSHOT_NAME: VolumeSnapshot 객체 이름입니다.

    • PVC_NAME: 스냅샷을 만들 PVC의 이름입니다.

  2. .status.readyToUse 필드가 true가 되면 스냅샷 작업이 완료됩니다. 다음 명령어를 사용하여 상태를 확인할 수 있습니다.

      kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG get volumesnapshot \
        -o custom-columns='NAME:.metadata.name,READY:.status.readyToUse'
    
  3. 데이터 소스로 지정된 볼륨 스냅샷으로 PVC 매니페스트를 업데이트합니다.

    kubectl --kubeconfig KUBERNETES_CLUSTER_KUBECONFIG \
        --namespace NAMESPACE apply -f - <<EOF
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: PVC_NAME
    spec:
      dataSource:
        name: VOLUME_SNAPSHOT_NAME
        kind: VolumeSnapshot
        apiGroup: snapshot.storage.k8s.io
      storageClassName: standard-rwo
      accessModes:
        - ReadWriteOnce
    resources:
      requests:
        storage: 10Gi
    EOF
    

    다음을 바꿉니다.

    • KUBERNETES_CLUSTER_KUBECONFIG: 클러스터의 kubeconfig 파일입니다.

    • NAMESPACE: PVC 리소스가 있는 네임스페이스입니다. 공유 클러스터의 경우 프로젝트 네임스페이스여야 합니다. 표준 클러스터의 경우 모든 네임스페이스일 수 있습니다.

    • PVC_NAME: 스냅샷을 만들 PVC의 이름입니다.

    • VOLUME_SNAPSHOT_NAME: 볼륨 스냅샷의 이름입니다.

다음 단계