Backup for GKE의 시스템 오류 문제 해결

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

오류 100010108: PersistentVolumeClaim 백업 실패 - 암호화된 디스크의 백업 계획 CMEK 누락

지역 범위 볼륨 백업을 만들 때 100010108 오류가 발생하고 GKE 클러스터가 암호화된 디스크를 참조하므로 백업 계획 CMEK가 필수입니다.

오류 이해하기

리전 범위 볼륨 백업을 만들 때 GKE 클러스터가 암호화된 디스크를 참조하는 경우 백업 계획 CMEK가 필수입니다. 이는 리전 범위 볼륨 백업의 엄격한 요구사항입니다. 소스 디스크가 암호화된 경우 백업 계획 CMEK가 제공되는 경우에만 해당 디스크의 스냅샷을 만들 수 있습니다. 백업 계획에 이 CMEK 구성이 없으면 스냅샷 생성이 실패하고 다음과 유사한 오류 메시지가 표시됩니다.

failed to create snapshot as disk "pvc-1" is encrypted with CMEK "projects/proj1/locations/us-east1/keyRings/keyring1/cryptoKeys/key1/cryptoKeyVersions/1", but no Backup Plan CMEK is provided. Please add CMEK to the Backup Plan.

문제 해결 단계

  1. 누락된 CMEK 구성 식별: 오류 메시지는 백업 중인 PVC가 암호화되어 있지만 백업 계획 구성에 암호화 키가 누락되었음을 확인합니다.
  2. 백업 계획에 CMEK 추가: 고객 관리 암호화 키 (CMEK)를 포함하도록 백업 계획 구성을 업데이트합니다. 이 키는 리전 범위가 지정된 볼륨 백업을 포함한 백업 데이터를 암호화하는 데 사용됩니다.
  3. 적절한 권한 확인: Backup for GKE 서비스 에이전트 (service-PROJECT_NUMBER@gcp-sa-gkebackup.iam.gserviceaccount.com)에 새로 추가된 CMEK에 대해 roles/cloudkms.cryptoKeyEncrypterDecrypter 역할이 할당되어 있는지 확인합니다.
  4. 백업 작업 다시 테스트: 백업 계획이 CMEK로 업데이트되고 권한이 부여되면 백업 작업을 다시 시도합니다.

오류 100020102: CustomResourceDefinition에 잘못된 스키마가 있습니다. 지원되지 않는 v1beta1 API 버전입니다.

원래 apiextensions.k8s.io/v1beta1 버전으로 적용된 CustomResourceDefinition을 백업하려고 시도할 때 apiextensions.k8s.io/v1 API 버전에 필요한 구조적 스키마가 없으면 오류 100020102가 발생합니다. 이 오류가 발생하면 CustomResourceDefinition - has an invalid schema. The resource was originally applied as v1beta1, which has been removed from Kubernetes 1.22+ 오류 메시지가 표시됩니다.

이 오류는 Google Kubernetes Engine 버전 1.22에서 apiextensions.k8s.io/v1beta1 API 버전이 삭제되었기 때문에 발생합니다. GKE 버전 1.22의 API 삭제에 대한 자세한 내용은 GKE v1.22의 API 삭제를 참고하세요.

허용 모드가 아닌 경우의 백업 작업 동작

허용 모드가 아닌 경우 또는 엄격한 백업 계획에서는 v1beta1 API로 생성된 CustomResourceDefinition과 같이 백업할 수 없는 리소스가 발견되면 백업 작업이 실패합니다. 이 오류는 리소스에 v1 API에 필요한 구조적 스키마가 없기 때문에 발생합니다. 이 CustomResourceDefinition가 있으면 최신 클러스터로 올바르게 복원되지 않을 수 있으므로 심각한 오류로 간주됩니다.

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

  1. kubectl get crd 명령어를 실행하여 문제가 있는 CustomResourceDefinition를 식별합니다.

    kubectl get crd CRD_NAME
    

    CRD_NAME을 오류 메시지의 CustomResourceDefinition 이름으로 바꿉니다.

  2. YAML 출력에서 다음 조건을 찾아 CustomResourceDefinition가 vbeta1 API에서 v1 API로 올바르게 변환되었는지 확인합니다.

    1. spec.versions: spec.versions 필드에 나열된 각 버전을 살펴 spec.versions 조건을 찾습니다. spec.versions에 schema.openAIV3Schema 필드가 누락된 경우 CustomResourceDefinition에 해당 버전에 대해 정의된 구조적 스키마가 없습니다.

    2. status.conditions: type:NonStructuralSchema 조건을 찾아 status.conditions 조건을 찾습니다. status.conditions의 status이 true인 경우 스키마가 구조적이지 않음을 명시적으로 확인합니다.

  3. 다음 단계에 따라 CustomResourceDefinition를 v1 API 버전으로 업그레이드합니다.

    1. 커스텀 리소스 내의 모든 필드와 그 유형을 정의하는 구조적 스키마를 추가하여 기존 CustomResourceDefinition가 v1 표준과 호환되도록 수정합니다. 구조적 스키마를 추가하는 방법에 대한 자세한 내용은 구조적 스키마 지정을 참조하세요.

    2. 호환되는 v1 매니페스트를 클러스터에 적용합니다.

  4. 업그레이드가 성공하면 백업 작업을 다시 시도합니다. 그렇지 않으면 다음 방법 중 하나를 사용하여 문제를 해결합니다.

    • CustomResourceDefinition가 클러스터에서 사용되지 않는 경우 kubectl delete crd 명령어를 실행하여 CustomResourceDefinition를 삭제합니다.

      kubectl delete crd CRD_NAME
      

      CRD_NAME을 삭제하려는 CustomResourceDefinition의 이름으로 바꿉니다.

    • 백업 계획에서 허용 모드를 사용 설정합니다. 그러면 Backup for GKE가 v1beta1 API 버전의 CustomResourceDefinitions를 포함한 리소스를 건너뛰고 나머지 백업 작업을 계속할 수 있습니다. 허용 모드를 사용 설정하는 방법에 대한 자세한 내용은 백업 계획에서 허용 모드 사용 설정을 참고하세요.

  5. 백업 작업을 다시 시도합니다. 작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 도움을 요청하세요.

오류 100020103: API 리소스를 쿼리하지 못함

100020103 오류는 백업을 수행하기 전에 Backup for GKE에서 커스텀 또는 집계된 Kubernetes API 서비스를 검색하지 못할 때 발생하고 Failed to query API resources. Please check if any API service is unavailable by using 'kubectl get apiservice' 오류 메시지가 표시됩니다. 집계된 API 서비스가 잘못 구성되었거나 지원 서비스 및 포드가 비정상적이거나 연결할 수 없는 경우에 발생합니다. 허용 모드가 아닌 경우 또는 엄격한 백업 계획에서 Backup for GKE는 사용할 수 없는 APIService를 발견하면 불완전하거나 일관되지 않은 클러스터 상태가 캡처되지 않도록 백업 작업을 중지합니다.

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

  1. 다음 명령어를 실행하여 사용할 수 없는 API 서비스를 식별합니다.

    kubectl get apiservice
    

    출력에서 AVAILABLE 열이 False인 API 서비스를 찾습니다.

  2. 다음 명령어를 실행하여 실패한 APIService의 세부정보를 검사합니다.

    kubectl describe apiservice APISERVICE_NAME
    

    APISERVICE_NAME을 실패한 API 서비스의 이름(예: v1beta1.custom.metrics.k8s.io)으로 바꿉니다.

    출력에서 spec.service 아래의 Service 필드와 Conditions 섹션을 검토하여 지원 서비스, 네임스페이스, 실패 원인 (예: 누락된 엔드포인트 또는 연결할 수 없는 대상 포트)을 식별합니다.

  3. 다음 방법 중 하나를 사용하여 오류를 해결합니다.

    • 지원 서비스 복원: 다음 명령어를 실행하여 지원 서비스에 준비된 엔드포인트가 있는지 확인합니다.

      kubectl get endpoints -n NAMESPACE SERVICE_NAME
      

      다음을 바꿉니다.

      • NAMESPACE: 지원 서비스의 네임스페이스입니다.
      • SERVICE_NAME: 지원 서비스의 이름입니다.

      서비스를 지원하는 포드가 존재하고 Running 상태인지 확인합니다. 트래픽이 지원 서비스에 도달하지 못하도록 하는 비정상 종료 포드, 이미지 가져오기 실패 또는 네트워크 정책 잘못된 구성을 해결합니다.

    • 고아 APIService 삭제: APIService이 삭제되었거나 더 이상 사용되지 않는 애플리케이션, 애플리케이션 운영자 또는 모니터링 도구에 속하는 경우 비활성 APIService을 삭제합니다.

      kubectl delete apiservice APISERVICE_NAME
      

      APISERVICE_NAME을 고아 API 서비스의 이름으로 바꿉니다.

    • 허용 모드 사용 설정: 사용할 수 없는 API 서비스를 즉시 수정하거나 삭제할 수 없는 경우 백업 계획에서 허용 모드를 사용 설정합니다. 허용 모드가 사용 설정되면 Backup for GKE가 백업 작업을 계속합니다. 하지만 사용할 수 없는 API 그룹에 속한 리소스는 백업되지 않습니다. 허용 모드를 사용 설정하는 방법에 대한 자세한 내용은 백업 계획에서 허용 모드 사용 설정을 참고하세요.

  4. 백업 작업을 다시 시도합니다. 작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 도움을 요청하세요.

오류 100040102: 네임스페이스를 찾을 수 없음

백업 범위에 지정된 네임스페이스를 클러스터 내에서 찾을 수 없어 백업 작업을 수행하려는 시도가 실패하면 오류 100040102가 발생합니다. Backup for GKE 에이전트가 BackupPlan 구성의 selectedNamespaces 필드에 명시적으로 나열된 하나 이상의 네임스페이스를 찾을 수 없습니다. Backup for GKE에서는 백업 작업이 시작될 때 지정된 모든 네임스페이스가 클러스터에 있어야 합니다. 네임스페이스를 찾을 수 없으면 다음 오류 메시지가 표시됩니다.

Namespace [NAMESPACE_NAME] is not found.

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

  1. BackupPlan 구성에서 selectedNamespaces 목록을 확인하여 네임스페이스가 올바르게 입력되었는지 확인합니다.

  2. kubectl get namespace 명령어를 실행하여 오류 메시지에 보고된 네임스페이스가 있는지 확인합니다.

    kubectl get namespace NAMESPACE_NAME
    

    NAMESPACE_NAME을 오류 메시지에 보고된 네임스페이스 이름으로 바꿉니다.

    네임스페이스가 없으면 네임스페이스를 찾을 수 없다는 메시지가 표시됩니다(예: Error from server (NotFound): namespaces "[NAMESPACE_NAME]" not found).

  3. BackupPlan를 수정합니다. 네임스페이스의 철자가 틀린 경우 BackupPlan를 올바른 네임스페이스 이름으로 업데이트합니다. 네임스페이스가 더 이상 존재하지 않고 백업할 필요가 없는 경우 BackupPlan 구성의 selectedNamespaces 목록에서 삭제합니다.

  4. BackupPlan을 필요한 대로 수정한 후 백업 작업을 다시 시도하고 새 백업을 시작합니다.

작업이 계속 실패하면 Cloud Customer Care에 문의하여 추가 도움을 요청하세요.

다음 단계