Backup for GKE의 스토리지 오류 문제 해결


이 페이지에서는 GKE용 백업을 사용할 때 발생할 수 있는 스토리지 관련 오류, 작업을 실행할 때 고려해야 할 사항, 문제를 해결하는 단계를 설명합니다.

오류 100010105: PersistentVolumeClaim 백업 실패 - PersistentVolume에서 참조하는 디스크가 존재하지 않음

PersistentVolumeClaim 백업 시도가 존재하지 않는 디스크를 참조하여 실패하면 오류 100010105가 발생하며, 그 결과 Failed to backup PersistentVolumeClaim - Disk referenced by PersistentVolume does not exist라는 오류 메시지가 표시됩니다.

Google Kubernetes Engine에서 PersistentVolumeClaimsPersistentVolumes에서 스토리지를 요청합니다. PersistentVolume는 스토리지 조각(일반적으로 기본 Compute Engine 영구 디스크)을 나타냅니다. PersistentVolumeClaimPersistentVolume에 바인딩되고 PersistentVolume의 구성이 Compute Engine 영구 디스크를 지정하는 경우 오류가 발생할 수 있습니다. 하지만 PersistentVolume 구성에 지정된 이름과 위치가 있는 실제 디스크를 Google Cloud 프로젝트에서 찾을 수 없습니다. 따라서 Backup for GKE는 존재하지 않는 디스크의 백업을 진행할 수 없으며 오류가 발생합니다.

이 오류를 해결하려면 다음 안내를 따르세요.

  1. 문제가 있는 PersistentVolumeClaimPersistentVolume를 식별합니다. 문제가 있는 PersistentVolumeClaim와 연결된 PersistentVolume의 이름이 모두 실패한 Backup for GKE 작업의 state reason 필드에 나열됩니다. PersistentVolumeClaim 이름, 네임스페이스, PersistentVolume 이름을 모두 문서화하는 것이 좋습니다.

  2. PersistentVolume을 검사합니다. PersistentVolume를 설명하려면 다음 명령어의 상태 이유 필드에서 식별한 PersistentVolume 이름을 사용하세요.

    kubectl describe pv PERSISTENTVOLUME_NAME
    

    PERSISTENTVOLUME_NAME을 PersistentVolume 이름으로 바꿉니다.

  3. 출력에서 source 섹션, 특히 csi 아래를 검사합니다. 이 섹션에서는 PersistentVolume가 참조하려고 하는 VolumeHandle를 설명합니다. 예를 들면 다음과 같습니다.

    Source:
      Type: GCEPersistentDisk (a Persistent Disk resource in Google Compute Engine)
    PDName: my-non-existent-disk
    FSType: ext4
    Partition: 0
    ReadOnly: false
                In this example, the PD name is my-non-existent-disk.
    
        Source:
      Type:       CSI (a Container Storage Interface (CSI) volume)
      Driver:     pd.csi.storage.gke.io
      VolumeHandle: projects/PROJECT_ID/zones/ZONE/disks/DISK_NAME
    ...
    

    이 예에서 VolumeHandle에는 이름과 위치를 포함한 디스크의 전체 경로가 포함됩니다. 예를 들면 projects/my-gcp-project/zones/us-central1-a/disks/my-disk-name입니다.

  4. PersistentVolume 설명에서 가져온 VolumeHandle를 사용하여 디스크 이름과 영역을 식별합니다.

  5. 다음 방법 중 하나를 사용하여 디스크가 Google Cloud 프로젝트에 있는지 확인합니다.

    영역 디스크

    영역 디스크를 사용하는 경우 Google Cloud CLI를 사용하여 gcloud compute disks describe 명령어를 실행합니다.

    gcloud compute disks describe DISK_NAME \
        --zone=ZONE_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • DISK_NAME: PersistentVolume 설명에서 가져온 디스크의 이름입니다.

    • ZONE_NAME: PersistentVolume 설명에서 가져온 디스크의 영역입니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

    리전 디스크

    리전 디스크를 사용하는 경우 Google Cloud CLI를 사용하여 gcloud compute disks describe 명령어를 실행합니다.

    gcloud compute disks describe DISK_NAME \
        --region=REGION_NAME \
        --project=PROJECT_ID
    

    다음을 바꿉니다.

    • DISK_NAME: PersistentVolume 설명에서 가져온 디스크의 이름입니다.

    • REGION_NAME: PersistentVolume 설명에서 가져온 디스크의 리전입니다.

    • PROJECT_ID: Google Cloud 프로젝트 ID입니다.

    Resource not found 또는 The resource DISK_NAME was not found 오류 메시지가 표시되면 디스크가 존재하지 않는 것입니다. 필요에 가장 적합한 시나리오에 따라 다음 방법 중 하나를 사용하여 문제를 해결하세요.

    • 디스크가 실수로 삭제되었거나 이름이 잘못 지정되었으며 데이터 또는 PersistentVolumeClaim를 유지하려는 경우 또는 PersistentVolume가 잘못된 디스크 이름으로 구성된 경우 다음 방법 중 하나를 사용하여 문제를 해결하세요.

      • 디스크 복원: 디스크 백업이 있는 경우 PersistentVolume에서 참조하는 것과 정확히 동일한 이름과 위치로 복원합니다.

      • 새 디스크 만들기: 디스크 복원이 옵션이 아닌 경우 PersistentVolume 구성에 있는 것과 동일한 이름과 위치로 새 디스크를 만듭니다.

    • PersistentVolumeClaim 또는 PersistentVolume, 해당 데이터 또는 애플리케이션이 더 이상 필요하지 않은 경우 불필요한 항목을 삭제하는 것이 좋습니다.

      • PersistentVolumeClaim 삭제: kubectl 명령줄 도구를 사용하여 kubectl delete pvc 명령어를 실행하여 PersistentVolumeClaim를 삭제합니다.
      kubectl delete pvc PVC_NAME -n NAMESPACE
      

      다음을 바꿉니다.

      • PVC_NAME: 삭제할 PersistentVolumeClaim의 이름입니다.

      • NAMESPACE: 삭제하려는 PersistentVolumeClaim의 네임스페이스입니다.

    • PersistentVolumeClaim를 삭제한 후에도 PersistentVolume가 계속 표시됨: PersistentVolumePersistentVolumeReclaimPolicyDelete로 설정된 경우 PersistentVolumeClaim가 삭제되면 PersistentVolume가 자동으로 삭제됩니다. persistentVolumeReclaimPolicyRetain로 설정된 경우 PersistentVolumeClaim가 삭제된 후 PersistentVolume를 수동으로 삭제해야 합니다. PersistentVolume를 삭제하려면 kubectl 명령줄 도구를 사용하여 kubectl delete pv 명령어를 실행하세요.

      kubectl delete pv PV_NAME
      

      PV_NAME을 삭제할 PersistentVolume의 이름으로 바꿉니다.

작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 지원을 받으세요.