Share via


Azure Kubernetes Service 백업 및 복원 문제 해결

이 문서에서는 AKS(Azure Kubernetes Service) 백업, 복원 및 관리 오류를 해결하는 데 도움이 되는 문제 해결 단계를 제공합니다.

AKS Backup 확장 설치 오류 해결

시나리오 1

오류 메시지:

{Helm installation from path [] for release [azure-aks-backup] failed with the following error: err [release azure-aks-backup failed, and has been uninstalled due to atomic being set: failed post-install: timed out waiting for the condition]} occurred while doing the operation: {Installing the extension} on the config"`

원인: 확장이 성공적으로 설치되었지만 Pod에 필요한 컴퓨팅 및 메모리를 사용할 수 없기 때문에 Pod가 생성되지 않습니다.

해결 방법: 문제를 해결하려면 클러스터의 노드 수를 늘려 Pod 생성에 충분한 컴퓨팅 및 메모리를 사용할 수 있도록 합니다. Azure Portal에서 노드 풀의 크기를 조정하려면 다음 단계를 수행합니다.

  1. Azure Portal에서 AKS 클러스터를 엽니다.
  2. 설정 아래의 노드 풀로 이동합니다.
  3. 노드 풀 크기 조정을 선택한 다음, 노드 수 범위에서 최솟값최댓값을 업데이트합니다.
  4. 적용을 선택합니다.

시나리오 2

오류 메시지:

BackupStorageLocation "default" is unavailable: rpc error: code = Unknown desc = azure.BearerAuthorizer#WithAuthorization: Failed to refresh the Token for request to https://management.azure.com/subscriptions/e30af180-aa96-4d81-981a-b67570b0d615/resourceGroups/AzureBackupRG_westeurope_1/providers/Microsoft.Storage/storageAccounts/devhayyabackup/listKeys?%24expand=kerb&api-version=2019-06-01: StatusCode=404 -- Original Error: adal: Refresh request failed. Status Code = '404'. Response body: no azure identity found for request clientID 4e95##### REDACTED #####0777`

Endpoint http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=4e95dcc5-a769-4745-b2d9-

원인: AKS 클러스터에서 Pod 관리 ID를 사용하도록 설정하면 aks-addon-exception이라는 AzurePodIdentityExceptionkube-system 네임스페이스에 추가됩니다. AzurePodIdentityException을 사용하면 특정 레이블이 있는 Pod가 Azure IMDS(Instance Metadata Service) 엔드포인트에 액세스할 수 있으며 NMI 서버가 해당 Pod를 가로채지 못합니다.

확장 Pod는 제외되지 않으며 Microsoft Entra Pod ID를 수동으로 사용하도록 설정해야 합니다.

해결 방법: AKS 클러스터에서 pod-identity 예외를 만듭니다(dataprotection-microsoft 네임스페이스 및 kube-system이 아닌 경우에만 작동). 자세히 알아보기.

  1. 다음 명령을 실행합니다.

    az aks pod-identity exception add --resource-group shracrg --cluster-name shractestcluster --namespace dataprotection-microsoft --pod-labels app.kubernetes.io/name=dataprotection-microsoft-kubernetes
    
  2. 클러스터에서 Azurepodidentityexceptions를 확인하려면 다음 명령을 실행합니다.

    kubectl get Azurepodidentityexceptions --all-namespaces
    
  3. 확장 ID에 Storage Blob 데이터 기여자 역할을 할당하려면 다음 명령을 실행합니다.

    az role assignment create --assignee-object-id $(az k8s-extension show --name azure-aks-backup --cluster-name aksclustername --resource-group aksclusterresourcegroup --cluster-type managedClusters --query aksAssignedIdentity.principalId --output tsv) --role 'Storage Blob Data Contributor' --scope /subscriptions/subscriptionid/resourceGroups/storageaccountresourcegroup/providers/Microsoft.Storage/storageAccounts/storageaccountname
    

시나리오 3

오류 메시지:

{"Message":"Error in the getting the Configurations: error {Post \https://centralus.dp.kubernetesconfiguration.azure.com/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /provider/managedclusters/clusters/ aksclustername /configurations/getPendingConfigs?api-version=2021-11-01\: dial tcp: lookup centralus.dp.kubernetesconfiguration.azure.com on 10.63.136.10:53: no such host}","LogType":"ConfigAgentTrace","LogLevel":"Error","Environment":"prod","Role":"ClusterConfigAgent","Location":"centralus","ArmId":"/subscriptions/ subscriptionid /resourceGroups/ aksclusterresourcegroup /providers/Microsoft.ContainerService/managedclusters/ aksclustername ","CorrelationId":"","AgentName":"ConfigAgent","AgentVersion":"1.8.14","AgentTimestamp":"2023/01/19 20:24:16"}`

원인: AKS 클러스터에서 클러스터 확장을 사용하려면 특정 FQDN/애플리케이션 규칙이 필요합니다. 자세히 알아보기.

이 오류는 클러스터 확장 서비스의 구성 정보를 사용할 수 없기 때문에 이러한 FQDN 규칙이 없음으로 인해 나타납니다.

해결 방법: 문제를 해결하려면 DP 엔드포인트가 공용 네트워크를 통과하도록 CoreDNS 사용자 지정 재정의를 만들어야 합니다.

  1. 클러스터에서 기존 CoreDNS-사용자 지정 YAML 가져오기(나중에 참조할 수 있도록 로컬에 저장)::

    kubectl get configmap coredns-custom -n kube-system -o yaml
    
  2. 중앙 DP 엔드포인트에 대한 매핑을 공용 IP로 재정의(아래 YAML 사용):

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: coredns-custom 
      namespace: kube-system
    data:
        aksdp.override: |
              hosts { 
                  20.40.200.153 centralus.dp.kubernetesconfiguration.azure.com
                  fallthrough
               }
    

    이제 아래 명령을 실행하여 업데이트 yaml 파일을 적용합니다.

    kubectl apply -f corednsms.yaml
    
  3. coredns Pod를 강제로 로드하려면 다음 명령을 실행합니다.

    kubectl delete pod --namespace kube-system -l k8s-app=kube-dns
    
  4. ExtensionAgent Pod에서 NSlookup을 수행하여 coreDNS-custom이 작동하는지 확인하려면 다음 명령을 실행합니다.

    kubectl exec -i -t pod/extension-agent-<pod guid that's there in your cluster> -n kube-system -- nslookup centralus.dp.kubernetesconfiguration.azure.com
    
  5. ExtensionAgent Pod의 로그를 확인하려면 다음 명령을 실행합니다.

    kubectl logs pod/extension-agent-<pod guid that’s there in your cluster> -n kube-system --tail=200
    
  6. 백업을 시작하려면 확장을 삭제하고 다시 설치합니다.

설치 후 백업 확장 관련 오류

이러한 오류 코드는 AKS 클러스터에 설치된 백업 확장의 문제로 인해 나타납니다.

KubernetesBackupListExtensionsError:

원인: 유효성이 검사된 백업 자격 증명 모음. 클러스터에 백업 확장이 설치되어 있는지 확인합니다. 이를 위해 자격 증명 모음 MSI에는 클러스터에 설치된 모든 확장을 나열할 수 있는 AKS 클러스터에 대한 읽기 관리자 권한이 필요합니다.

권장 작업: 할당된 읽기 권한자 역할에 list-extension 권한이 없으므로 읽기 권한자 역할을 자격 증명 모음 MSI에 다시 할당합니다(기존 역할 할당을 제거하고 읽기 권한자 역할을 다시 할당). 다시 할당이 실패하면 다른 백업 자격 증명 모음을 사용하여 백업을 구성합니다.

UserErrorKubernetesBackupExtensionNotFoundError

원인: 유효성이 검사된 백업 자격 증명 모음. 클러스터에 백업 확장이 설치되어 있는지 확인합니다. 자격 증명 모음은 클러스터에 설치된 확장을 나열하는 작업을 수행합니다. 백업 확장이 목록에 없으면 이 오류가 나타납니다.

권장 작업: CL 또는 Azure Portal 클라이언트를 사용하여 확장을 삭제한 다음, 확장을 다시 설치합니다.

UserErrorKubernetesBackupExtensionHasErrors

원인: 클러스터에 설치된 백업 확장에 몇 가지 내부 오류가 있습니다.

권장 작업: CL 또는 Azure Portal 클라이언트를 사용하여 확장을 삭제한 다음, 확장을 다시 설치합니다.

UserErrorKubernetesBackupExtensionIdentityNotFound

원인: AKS 백업을 사용하려면 클러스터에 백업 확장이 설치되어 있어야 합니다. 설치와 함께 확장에는 확장 MSI라는 사용자 ID가 생성됩니다. 이 MSI는 AKS 클러스터의 노드 풀을 구성하는 리소스 그룹에서 만들어집니다. 이 MSI는 백업 스토리지 위치에 액세스하기 위해 할당된 필수 역할을 가져옵니다. 오류 코드는 확장 ID가 없음을 나타냅니다.

권장 작업: CLI 또는 Azure Portal 클라이언트를 사용하여 확장을 삭제한 다음 확장을 다시 설치합니다. 확장과 함께 새 ID가 만들어집니다.

KubernetesBackupCustomResourcesTrackingTimeOutError

원인: AKS용 Azure Backup을 사용하려면 클러스터에 백업 확장을 설치해야 합니다. 백업 및 복원 작업을 수행하기 위해 클러스터에 사용자 지정 리소스가 만들어집니다. 확장 생성 Pod가 이러한 CR을 통해 백업 관련 작업을 수행합니다. 이 오류는 확장에서 이러한 CR의 상태를 업데이트할 수 없는 경우에 발생합니다.

권장 작업: 명령 kubectl get pods -n dataprotection.microsoft를 실행하여 확장의 상태를 확인해야 합니다. Pod가 실행 중 상태가 아닌 경우 클러스터의 노드 수를 1로 늘리거나 컴퓨팅 제한을 늘립니다. 그런 다음, 몇 분 동안 기다렸다가 명령을 다시 실행합니다. 그러면 Pod의 상태가 실행 중으로 변경됩니다. 문제가 지속되면 확장을 삭제했다가 다시 설치합니다.

BackupPluginDeleteBackupOperationFailed

원인: 백업을 삭제하려면 백업 확장을 실행해야 합니다.

권장 작업: 클러스터가 실행 중인 경우 확장이 정상 상태로 실행되고 있는지 확인합니다. 확장 Pod가 생성되고 있는지 확인합니다. 그렇지 않으면 노드를 늘입니다. 실패하면 확장을 삭제했다가 다시 설치해 보세요. 백업된 클러스터가 삭제된 경우 스냅샷 및 메타데이터를 수동으로 삭제합니다.

ExtensionTimedOutWaitingForBackupItemSync

원인: 백업 확장은 백업 항목이 스토리지 계정과 동기화될 때까지 기다립니다.

권장 작업: 이 오류 코드가 나타나면 백업 작업을 다시 시도하거나 확장을 다시 설치합니다.

백업 스토리지 위치 기반 오류

이러한 오류 코드는 AKS 클러스터에 설치된 백업 확장 관련 문제로 인해 표시됩니다.

UserErrorDeleteBackupFailedBackupStorageLocationReadOnly

원인: 백업 확장 설치 중에 입력으로 제공된 스토리지 계정은 읽기 전용 상태이므로 Blob 컨테이너에서 백업 데이터를 삭제할 수 없습니다.

권장 작업: 스토리지 계정 상태를 읽기 전용에서 쓰기로 변경합니다.

UserErrorDeleteBackupFailedBackupStorageLocationNotFound

원인: 확장을 설치하는 동안 백업 스토리지 위치는 스토리지 계정 및 Blob 컨테이너를 포함하는 입력으로 제공됩니다. 확장 설치 중에 위치가 삭제되거나 잘못 추가된 경우 이 오류가 나타납니다.

권장 작업: 백업 확장을 삭제한 다음, 올바른 스토리지 계정 및 Blob 컨테이너를 입력으로 다시 설치합니다.

UserErrorBackupFailedBackupStorageLocationReadOnly

원인: 백업 확장 설치 중에 입력으로 제공된 스토리지 계정은 읽기 전용 상태이므로 Blob 컨테이너에 백업 데이터를 쓸 수 없습니다.

권장 작업: 스토리지 계정 상태를 읽기 전용에서 쓰기로 변경합니다.

UserErrorNoDefaultBackupStorageLocationFound

원인: 확장을 설치하는 동안 백업 스토리지 위치는 입력으로 제공되며 스토리지 계정 및 Blob 컨테이너를 포함합니다. 확장 설치 중에 위치가 삭제되거나 잘못 입력되면 이 오류가 나타납니다.

권장 작업: 백업 확장을 삭제한 다음, 올바른 스토리지 계정 및 Blob 컨테이너를 입력으로 다시 설치합니다.

UserErrorExtensionMSIMissingPermissionsOnBackupStorageLocation

원인: 백업 확장에는 백업 스토리지 위치(스토리지 계정)에 대한 Storage Blob 데이터 기여자 역할이 있어야 합니다. 확장 ID에 이 역할이 할당됩니다.

권장 작업: 이 역할이 누락된 경우 Azure Portal 또는 CLI를 사용하여 스토리지 계정에서 누락된 이 권한을 다시 할당합니다.

UserErrorBackupStorageLocationNotReady

원인: 확장을 설치하는 동안 백업 스토리지 위치는 입력으로 제공되며 스토리지 계정 및 Blob 컨테이너를 포함합니다. 백업 확장에는 백업 스토리지 위치(스토리지 계정)에 대한 Storage Blob 데이터 기여자 역할이 있어야 합니다. 확장 ID에 이 역할이 할당됩니다.

권장 작업: 확장 ID에 스토리지 계정에 액세스할 수 있는 권한이 없는 경우 이 오류가 나타납니다. 보호 작업을 구성할 때 AKS 백업 확장이 처음으로 설치된 경우에 이 오류가 나타납니다. 이 오류는 부여된 권한이 AKS 백업 확장으로 전파되는 데 걸리는 시간 동안 발생합니다. 해결 방법으로 1시간을 기다렸다가 보호 구성을 다시 시도합니다. 그렇지 않으면 Azure Portal 또는 CLI를 사용하여 스토리지 계정에 대한 누락된 이 권한을 다시 할당합니다.

자격 증명 모음 백업 기반 오류

AKS 백업을 사용하여 자격 증명 모음 표준 데이터 저장소에 백업을 저장하는 동안 이 오류 코드가 나타날 수 있습니다.

DppUserErrorVaultTierPolicyNotSupported

원인: 이 오류 코드는 이 데이터 저장소가 지원되지 않는 지역에서 백업 자격 증명 모음의 자격 증명 모음 표준 데이터 저장소에 대해 보존 규칙을 정의한 상태로 백업 정책을 만들 때 나타납니다.

권장 작업: Azure Portal에 정의된 자격 증명 모음 표준 기간으로 보존 규칙을 업데이트합니다.

  1. 규칙 옆에 있는 편집 아이콘을 선택합니다.

    AKS 백업의 보존 기간을 편집하는 방법을 보여 주는 스크린샷.

  2. 자격 증명 모음 표준 옆에 있는 확인란의 선택을 취소한 다음, 업데이트를 선택합니다.

    자격 증명 모음 표준 확인란을 지우는 것을 보여 주는 스크린샷.

  3. 운영 계층 백업에 대한 백업 정책을 만듭니다(AKS 클러스터에 대한 스냅샷만).

AKS 백업 및 복원 작업이 경고와 함께 완료되었습니다.

UserErrorPVSnapshotDisallowedByPolicy

오류 코드: UserErrorPVSnapshotDisallowedByPolicy

원인: CSI 드라이버의 볼륨 스냅샷 생성을 중단하는 구독을 통해 Azure Policy가 할당되었습니다.

권장 작업: 디스크 스냅샷 작업을 중단하는 Azure Policy를 제거한 다음 주문형 백업을 수행합니다.

UserErrorPVSnapshotLimitReached

오류 코드: UserErrorPVSnapshotLimitReached

원인: 특정 시점에 존재할 수 있는 영구 볼륨의 스냅샷 수가 제한되어 있습니다. Azure 디스크 기반 영구 볼륨의 경우 한도는 스냅샷 500개입니다. 이 오류는 지원되는 한도보다 높은 스냅샷이 존재하여 특정 영구 볼륨에 대한 스냅샷이 생성되지 않을 때 나타납니다.

권장 작업: 백업 정책을 업데이트하여 보존 기간을 줄이고 Backup 자격 증명 모음이 이전 복구 지점을 삭제할 때까지 기다립니다.

CSISnapshottingTimedOut

오류 코드: CSISnapshottingTimedOut

원인: CSI 드라이버가 스냅샷 핸들을 가져오는 데 시간이 초과되어 스냅샷이 실패했습니다.

권장 작업: 주문형 백업을 실행하여 성공적인 스냅샷을 가져오려면 로그를 검토하고 작업을 다시 시도하거나 다음 예약된 백업을 기다립니다.

UserErrorHookExecutionFailed

오류 코드: UserErrorHookExecutionFailed

원인: 백업 및 복원과 함께 실행하기 위해 적용된 후크에 오류가 발생하면 성공적으로 적용되지 않습니다.

권장 작업: 로그를 검토하고 후크를 업데이트한 다음 백업/복원 작업을 다시 시도합니다.

UserErrorNamespaceNotFound

오류 코드: UserErrorNamespaceNotFound

원인: 백업을 수행하는 동안 백업 구성에 제공된 네임스페이스가 누락되었습니다. 네임스페이스가 잘못 제공되었거나 삭제되었습니다.

권장 작업: 백업할 네임스페이스가 올바르게 제공되었는지 확인합니다.

UserErrorPVCHasNoVolume

오류 코드: UserErrorPVCHasNoVolume

원인: 컨텍스트의 PVC(영구 볼륨 클레임)에 연결된 영구 볼륨이 없습니다. 따라서 PVC는 백업되지 않습니다.

권장 작업: 백업이 필요한 경우 PVC에 볼륨을 연결합니다.

UserErrorPVCNotBoundToVolume

오류 코드: UserErrorPVCNotBoundToVolume

원인: 컨텍스트의 PVC가 보류 중 상태이고 영구 볼륨이 연결되어 있지 않습니다. 따라서 PVC는 백업되지 않습니다.

권장 작업: 백업이 필요한 경우 PVC에 볼륨을 연결합니다.

UserErrorPVNotFound

오류 코드: UserErrorPVNotFound

원인: 영구 볼륨의 기본 스토리지 매체가 없습니다.

권장 작업: 실제 스토리지 매체가 연결된 새 영구 볼륨을 확인하고 연결합니다.

UserErrorStorageClassMissingForPVC

오류 코드: UserErrorStorageClassMissingForPVC

원인: AKS 백업은 사용 중인 스토리지 클래스를 확인하고 클래스를 사용할 수 없으므로 영구 볼륨의 스냅샷 생성을 건너뜁니다.

권장 작업: 사용된 스토리지 클래스로 PVC 사양을 업데이트합니다.

UserErrorSourceandTargetClusterCRDVersionMismatch

오류 코드: UserErrorSourceandTargetClusterCRDVersionMismatch

원인: 복원 중 원본 AKS 클러스터와 대상 AKS 클러스터에 서로 다른 버전의 FlowSchemaPriorityLevelConfigurations CR이 있습니다. 클러스터 버전의 불일치로 인해 일부 Kubernetes 리소스가 복원되지 않습니다.

권장 작업: 대상 클러스터에 대해 원본 클러스터와 동일한 클러스터 버전을 사용하거나 수동으로 CR을 적용합니다.

다음 단계