문제 해결

이 페이지에서는 Batch 관련 문제를 해결하는 방법을 보여줍니다.

오류 메시지가 없는 작업의 문제를 해결하려는 경우 이 문서를 검토하기 전에 상태 이벤트를 확인하여 작업 기록에 오류 메시지가 포함되어 있는지 확인합니다.

작업 문제 해결에 대한 자세한 내용은 다음 문서도 참조하세요.

작업 생성 오류

작업을 만들 수 없는 경우 이 섹션의 오류 중 하나 때문일 수 있습니다.

할당량 부족

문제

작업을 만들려고 하면 다음 문제 중 하나가 발생합니다.

  • 작업이 QUEUED 상태이면 다음 문제가 statusEvents 필드에 표시됩니다.

    Quota checking process decides to delay scheduling for the job JOB_UID due to inadequate quotas [Quota: QUOTA_NAME, limit: QUOTA_LIMIT, usage: QUOTA_CURRENT_USAGE, wanted: WANTED_QUOTA.].
    

    이 문제는 QUOTA_NAME 할당량의 현재 사용량(QUOTA_USAGE) 및 한도(QUOTA_LIMIT)에서 작업에서 요청한 사용량(WANT_QUOTA)을 차단하여 작업이 지연되었음을 나타냅니다.

  • 작업이 QUEUED, SCHEDULED 또는 FAILED 상태인 경우 다음 문제 중 하나가 statusEvents 필드에 표시됩니다.

    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in region REGION
    
    RESOURCE_NAME creation failed:
    Quota QUOTA_NAME exceeded. Limit: QUOTA_LIMIT in zone ZONE
    

    이 문제는 요청이 지정된 위치에서 QUOTA_LIMIT의 한도가 있는 QUOTA_NAME 할당량을 초과하여 리소스를 만들 수 없음을 나타냅니다.

솔루션

문제를 해결하려면 다음 단계를 따르세요.

  • 작업이 지연된 경우 추가 할당량이 해제될 때까지 기다리세요.

  • 할당량 부족으로 인해 작업이 실패했거나 이 지연이 지속되는 경우 다음 중 하나를 수행하여 할당량 부족을 방지하세요.

    • 이 할당량보다 적은 할당량 또는 다른 할당량을 사용하는 작업을 만듭니다. 예를 들어 작업에 다른 위치 또는 리소스 유형을 지정하거나 추가 프로젝트에 할당량 사용량을 분할합니다.

    • Google Cloud에서 프로젝트의 할당량 한도 상향을 요청합니다.

자세한 내용은 Batch 할당량 및 한도할당량 작업을 참조하세요.

서비스 계정 역할을 할 수 있는 권한 부족

문제

작업을 만들려고 하면 다음 문제가 발생합니다.

  • 작업에서 인스턴스 템플릿을 사용하지 않는 경우 문제는 다음과 같이 표시됩니다.

    caller does not have access to act as the specified service account: SERVICE_ACCOUNT_NAME
    
  • 작업에서 인스턴스 템플릿을 사용하는 경우 문제는 다음과 같이 표시됩니다.

    Error: code - CODE_SERVICE_ACCOUNT_MISMATCH, description - The service account specified in the instance template INSTANCE_TEMPLATE_SERVICE_ACCOUNT doesn't match the service account specified in the job JOB_SERVICE_ACCOUNT for JOB_UID, project PROJECT_NUMBER
    

이 문제는 일반적으로 작업을 만드는 사용자에게 iam.serviceAccounts.actAs 권한에 의해 제어되는 작업에서 사용하는 서비스 계정 역할을 수행할 수 있는 충분한 권한이 없기 때문에 발생합니다.

솔루션

문제를 해결하려면 다음 단계를 따르세요.

  1. 작업에서 인스턴스 템플릿을 사용하는 경우 인스턴스 템플릿에 지정된 서비스 계정이 작업 정의에 지정된 서비스 계정과 일치하는지 확인합니다.
  2. 작업을 만드는 사용자에게 작업에 지정된 서비스 계정에 대한 서비스 계정 사용자 역할(roles/iam.serviceAccountUser)이 부여되었는지 확인합니다. 자세한 내용은 액세스 관리를 참조하세요.
  3. 작업을 다시 만듭니다.

반복된 네트워크

문제

작업을 만들려고 하면 다음 문제가 발생합니다.

Networks must be distinct for NICs in the same InstanceTemplate

이 문제는 작업에 네트워크를 두 번 이상 지정했기 때문에 발생합니다.

솔루션

이 문제를 해결하려면 작업을 다시 만들고 다음 옵션 중 하나를 사용하여 네트워크를 지정합니다.

자세한 내용은 작업용 네트워크 지정을 참조하세요.

VPC 서비스 제어를 위한 잘못된 네트워크

문제

작업을 만들려고 하면 다음 문제가 발생합니다.

no_external_ip_address field is invalid. VPC Service Controls is enabled for the project, so external ip address must be disabled for the job. Please set no_external_ip_address field to be true

솔루션

이 문제는 VPC 서비스 제어 서비스 경계에 외부 IP 주소가 있는 VM으로 작업을 만들고 실행하려고 하기 때문에 발생합니다.

이 문제를 해결하려면 모든 VM의 외부 액세스를 차단하는 작업을 만듭니다.

VPC 서비스 제어 서비스 경계에서 작업에 대한 네트워킹을 구성하는 방법에 대한 자세한 내용은 Batch에서 VPC 서비스 제어 사용을 참조하세요.

작업 실패 오류

작업이 제대로 실행되지 않거나 명확하지 않은 이유로 실패한 경우 이 섹션의 오류 중 하나이거나 다음 태스크 실패 종료 코드 섹션의 종료 코드 중 하나 때문일 수 있습니다.

Cloud Logging에 로그 없음

문제

작업을 디버깅해야 하지만 Cloud Logging에 작업에 대한 로그가 표시되지 않습니다.

이 문제가 발생하는 이유는 다음과 같습니다.

  • 프로젝트에 Cloud Logging API가 사용 설정되지 않았습니다. 작업 로그에 대해 다른 모든 항목을 올바르게 구성하더라도 프로젝트에 서비스가 사용 설정되지 않았으면 로그가 생성되지 않습니다.
  • 작업의 서비스 계정에 로그 작성 권한이 없습니다. 권한이 부족하면 작업에서 로그를 생성할 수 없습니다.
  • 작업이 로그를 생성하도록 구성되지 않았습니다. Cloud Logging에서 로그를 생성하려면 작업에 Cloud Logging이 사용 설정되어 있어야 합니다. 또한 로그에 표시할 정보를 표준 출력(stdout) 및 표준 오류(stderr) 스트림에 기록하도록 작업의 실행 가능 항목을 구성해야 합니다. 자세한 내용은 로그를 사용하여 작업 분석을 참조하세요.
  • 태스크가 실행되지 않았습니다. 태스크에 리소스가 할당되고 실행이 시작될 때까지 로그를 생성할 수 없습니다.
  • Cloud Logging이 작업 로그를 자동으로 제외하도록 구성되었습니다. Batch 작업의 로그를 제외시키는 Cloud Logging의 제외 필터를 구성한 경우 Batch 작업의 로그가 표시되지 않습니다.

솔루션

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

  1. 현재 Cloud Logging의 제외 필터를 사용 중지하여 로그가 Cloud Logging에서 자동으로 제외되지 않았는지 확인합니다.
  2. 프로젝트에 Cloud Logging API가 사용 설정되어 있는지 확인합니다.
  3. 작업의 서비스 계정에 로그 작성자(roles/logging.logWriter) IAM 역할이 부여되었는지 확인합니다. 자세한 내용은 프로젝트에 Batch 사용 설정을 참조하세요.
  4. gcloud CLI 또는 Batch API를 사용하여 작업 세부정보를 확인합니다. 작업 세부정보를 통해 작업이 로그를 생성하지 않은 이유를 이해하고 로그에서 가져오려는 정보를 제공할 수 있습니다. 예를 들어 다음을 수행합니다.
    1. 로깅이 사용 설정되었는지 확인하려면 작업의 logsPolicy 필드를 검토합니다.
    2. 작업 실행이 성공적으로 완료되었는지 확인하려면 작업의 status 필드를 검토합니다.

변경한 후 작업을 다시 만들고 작업 실행이 완료될 때까지 기다린 후 로그를 확인합니다.

서비스 에이전트 보고 없음

문제

VM이 생성되기 전에 제대로 실행되지 않거나 실패한 작업의 statusEvents 필드에 다음 문제가 나타납니다.

No VM has agent reporting correctly within time window NUMBER_OF_SECONDS seconds, VM state for instance VM_NAME is TIMESTAMP,agent,start

이 문제는 Batch 서비스 에이전트에 보고하는 작업의 VM이 없음을 나타냅니다.

이 문제가 발생하는 이유는 다음과 같습니다.

  • 작업의 VM에 충분한 권한이 없습니다. 작업의 VM에는 상태를 Batch 서비스 에이전트에 보고하기 위한 특정 권한이 필요합니다. 작업의 서비스 계정에 Batch 에이전트 보고자 역할(roles/batch.agentReporter)을 부여하여 작업의 VM에 이러한 권한을 제공할 수 있습니다.
  • 작업의 VM에 네트워크 문제가 있습니다. 작업의 VM은 Batch 서비스 에이전트와 통신하기 위해 네트워크 액세스가 필요합니다.
  • 작업의 VM이 오래된 Batch VM OS 이미지를 사용하거나 오래된 Batch 서비스 에이전트 소프트웨어가 있는 VM OS 이미지를 사용합니다. 작업의 VM은 VM OS 이미지에 Batch 서비스 에이전트에 보고하기 위한 현재 종속 항목을 제공하는 소프트웨어가 필요합니다.

솔루션

문제를 해결하려면 다음 단계를 따르세요.

  1. 작업의 VM에 상태를 Batch 서비스 에이전트에 보고하는 데 필요한 권한이 있는지 확인합니다.

    1. 작업의 서비스 계정을 확인하려면 gcloud CLI 또는 Batch API를 사용하여 작업의 세부정보를 확인합니다. 서비스 계정이 표시되지 않으면 작업은 기본적으로 Compute Engine 기본 서비스 계정을 사용합니다.
    2. 작업의 서비스 계정에 Batch 에이전트 보고자 역할(roles/batch.agentReporter)에 대한 권한이 있는지 확인합니다. 자세한 내용은 액세스 관리서비스 계정 사용 제한을 참조하세요.

      예를 들어 필요한 권한을 Compute Engine 기본 서비스 계정에 부여하려면 다음 명령어를 사용합니다.

      gcloud projects add-iam-policy-binding \
        --role roles/batch.agentReporter \
        --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
      

      여기에서 PROJECT_NUMBER프로젝트 번호로 바꿉니다.

  2. 작업의 VM에 적절한 네트워크 액세스 권한이 있는지 확인합니다. 자세한 내용은 Batch 네트워킹 개요일반적인 네트워킹 문제 해결을 참조하세요.

  3. 작업에 VM OS 이미지를 지정한 경우 VM OS 이미지가 현재 지원되는지 확인합니다.

    1. 작업에 Cloud Logging을 사용 설정한 경우 다음 에이전트 로그(batch_agent_logs)를 확인하여 이 문제를 식별할 수 있습니다. 자세한 내용은 로그를 사용하여 작업 분석을 참조하세요.

      • 오래된 Batch 서비스 에이전트 소프트웨어 오류 로그:

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_AGENT_VERSION: outdated Batch agent version used.
        

        BATCH_AGENT_VERSION은 작업에서 사용하는 Batch 서비스 에이전트와 통신하는 소프트웨어 버전입니다(예: cloud-batch-agent_20221103.00_p00).

      • 오래된 Batch VM OS 이미지 오류를 로깅합니다.

        rpc error: code = FailedPrecondition, desc = Invalid resource state for BATCH_VM_OS_IMAGE_NAME: outdated Batch image version.
        

        BATCH_VM_OS_IMAGE_NAME은 작업에서 사용하는 Batch의 VM OS 이미지의 특정 버전입니다(예: batch-debian-11-20220909-00-p00).

    2. 최신 VM OS 이미지를 사용하면 이 문제를 해결할 수 있습니다. 작업에서 커스텀 이미지를 사용하는 경우 지원되는 공개 이미지의 최신 버전 중 하나를 기반으로 커스텀 이미지를 다시 만듭니다.

      자세한 내용은 지원되는 VM OS 이미지VM OS 이미지 보기를 참조하세요.

  4. 작업을 다시 만듭니다.

VM 외부 IP 주소 제약조건 위반

문제

실패한 작업의 statusEvents 필드에 다음 문제가 나타납니다.

Instance VM_NAME creation failed: Constraint constraints/compute.vmExternalIpAccess violated for project PROJECT_NUMBER.
Add instance VM_NAME to the constraint to use external IP with it.

이 문제는 허용 목록에 추가된 VM만 외부 IP 주소를 사용할 수 있도록 프로젝트, 폴더 또는 조직에서 compute.vmExternalIpAccess 조직 정책 제약조건을 설정했기 때문에 발생합니다.

솔루션

문제를 해결하려면 작업을 다시 만들고 다음 중 하나를 수행합니다.

신뢰할 수 있는 이미지에 대한 제약조건 위반

문제

실패한 작업의 statusEvents 필드에 다음 문제가 나타납니다.

Instance VM_NAME creation failed: Constraint constraints/compute.trustedImageProjects violated for project PROJECT_ID. Use of images from project batch-custom-image is prohibited.

솔루션

이 문제는 프로젝트에서 batch-custom-image 이미지 프로젝트에 있는 Batch의 이미지가 허용되지 않도록 신뢰할 수 있는 이미지(compute.trustedImageProjects) 정책 제약조건을 설정했기 때문에 발생합니다.

문제를 해결하려면 다음 중 최소한 하나 이상을 수행합니다.

  • 신뢰할 수 있는 이미지 정책 제약조건에서 이미 허용하는 VM OS 이미지를 지정하는 작업을 다시 만듭니다.
  • 신뢰할 수 있는 이미지 정책 제약조건을 수정하여 batch-custom-image 이미지 프로젝트의 VM OS 이미지를 허용하도록 관리자에게 요청합니다. 자세한 내용은 Batch의 VM OS 이미지 액세스 제어를 참조하세요.

인스턴스 템플릿을 사용하는 동안 작업 실패

문제

인스턴스 템플릿을 사용하는 실패한 작업의 statusEvents 필드에 다음 문제가 표시됩니다.

INVALID_FIELD_VALUE,BACKEND_ERROR

이 문제는 작업의 인스턴스 템플릿에 있는 불분명한 문제로 인해 발생합니다.

솔루션

문제를 추가로 디버깅하려면 다음 단계를 따르세요.

  1. 인스턴스 템플릿을 사용하여 MIG를 만들고 추가 세부정보와 함께 오류가 발생하는지 확인합니다.
  2. 선택사항: 자세한 정보를 확인하려면 Google Cloud 콘솔에서 MIG를 만드는 장기 실행 작업을 참조하세요.

    Compute Engine 작업으로 이동

태스크 실패 종료 코드

작업의 특정 태스크가 실패하면 태스크는 0이 아닌 종료 코드를 반환합니다. ignoreExitStatus 필드 구성 방법에 따라 실패한 태스크로 인해 작업이 실패할 수도 있고 그렇지 않을 수도 있습니다.

실행 가능한 파일에서 정의한 종료 코드 외에도 Batch에는 다음과 같은 종료 코드를 포함한 여러 개의 예약된 종료 코드가 있습니다.

VM 선점(50001)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Spot Preemption with exit code 50001.

이 문제는 런타임 중 작업의 스팟 VM이 선점되면 발생합니다.

솔루션

이 문제를 해결하려면 다음 중 한 가지를 따르세요.

  • 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.
  • 선점이 발생하지 않도록 하려면 표준 프로비저닝 모델에서 VM을 대신 사용하세요.

VM 보고 시간 초과(50002)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to Batch no longer receives VM updates with exit code 50002.

이 문제는 작업에 VM이 더 이상 업데이트를 수신하지 못하게 만드는 백엔드의 시간 초과로 인해 발생합니다.

솔루션

이 문제를 해결하려면 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.

실행 중에 VM이 재부팅됨(50003)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is rebooted during task execution with exit code 50003.

이 문제는 작업의 VM이 런타임 중에 예기치 않게 재부팅될 때 발생합니다.

솔루션

이 문제를 해결하려면 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.

VM 및 태스크가 응답하지 않음(50004)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to tasks cannot be canceled with exit code 50004.

이 문제는 태스크가 응답하지 않고 시간 초과되어 취소할 수 없을 때 발생합니다.

솔루션

이 문제를 해결하려면 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.

태스크가 최대 런타임 동안 실행됨(50005)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to task runs over the maximum runtime with exit code 50005.

이 문제는 다음과 같은 경우에 발생합니다.

  • 태스크의 실행 시간이 maxRunDuration 필드에 지정된 시간 제한을 초과합니다.
  • 실행 가능 항목의 실행 시간이 timeout 필드에 지정된 시간 제한을 초과합니다.

구체적으로 어떤 시간 제한이 초과되었는지 파악하려면 작업 로그를 보고 50005 종료 코드가 언급된 로그를 찾습니다. 이 로그의 textPayload 필드는 시간 제한이 초과된 위치와 시기를 나타냅니다.

솔루션

이 문제를 해결하려면 시간 제한을 초과한 태스크 또는 실행 가능 항목에 필요한 총 실행 시간을 확인합니다. 그런 후 다음 중 하나를 수행합니다.

  • 실행 시간이 일관적이지 않은 태스크 또는 실행 가능 항목에 대해 이 오류가 가끔 발생할 경우 작업을 다시 만들고 태스크 재시도를 자동화하도록 구성하여 성공률을 높일 수 있습니다.

  • 그렇지 않고 태스크 또는 실행 가능 항목에 일관되고 의도적으로 실행을 완료하는 데 현재 제한 시간으로 허용되는 것보다 더 많은 시간이 필요한 경우에는 더 긴 제한 시간을 설정합니다.

실행 중에 VM이 다시 생성됨(50006)

문제

작업의 statusEvents 필드에 다음 문제가 나타납니다.

Task state is updated from PRE-STATE to FAILED on zones/ZONE/instances/INSTANCE_ID due to VM is recreated during task execution with exit code 50006.

이 문제는 작업의 VM이 런타임 중에 예기치 않게 다시 생성될 때 발생합니다.

솔루션

이 문제를 해결하려면 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.

다음 단계