이 페이지에서는 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
권한에 의해 제어되는 작업에서 사용하는 서비스 계정 역할을 수행할 수 있는 충분한 권한이 없기 때문에 발생합니다.
솔루션
문제를 해결하려면 다음 단계를 따르세요.
- 작업에서 인스턴스 템플릿을 사용하는 경우 인스턴스 템플릿에 지정된 서비스 계정이 작업 정의에 지정된 서비스 계정과 일치하는지 확인합니다.
- 작업을 만드는 사용자에게 작업에 지정된 서비스 계정에 대한 서비스 계정 사용자 역할(
roles/iam.serviceAccountUser
)이 부여되었는지 확인합니다. 자세한 내용은 액세스 관리를 참조하세요. - 작업을 다시 만듭니다.
반복된 네트워크
문제
작업을 만들려고 하면 다음 문제가 발생합니다.
Networks must be distinct for NICs in the same InstanceTemplate
이 문제는 작업에 네트워크를 두 번 이상 지정했기 때문에 발생합니다.
솔루션
이 문제를 해결하려면 작업을 다시 만들고 다음 옵션 중 하나를 사용하여 네트워크를 지정합니다.
- VM 인스턴스 템플릿: 이 작업을 만드는 동안 VM 인스턴스 템플릿을 사용하려면 VM 인스턴스 템플릿에서 네트워크를 지정해야 합니다
network
및subnetwork
필드: 이러한 필드는 Batch API를 사용하여 작업을 만들 때 요청 본문에서 사용하거나 gcloud CLI를 사용하여 작업을 만들 때 JSON 구성 파일에서 사용할 수 있습니다.--network
및--subnetwork
플래그: 이러한 플래그는 gcloud CLI를 사용하여 작업을 만들 때gcloud batch jobs submit
명령어와 함께 사용할 수 있습니다.
자세한 내용은 작업 네트워크 지정을 참조하세요.
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이 작업 로그를 자동으로 제외하도록 구성되었습니다. 일괄 작업의 로그가 제외되는 제외 필터를 Cloud Logging에 구성한 경우 일괄 작업의 로그를 표시할 수 없습니다.
솔루션
이 문제를 해결하려면 다음 단계를 따르세요.
- Cloud Logging의 제외 필터를 사용 중지하여 로그가 Cloud Logging에서 자동으로 제외되지 않았는지 확인합니다.
- 프로젝트에 Cloud Logging API가 사용 설정되어 있는지 확인합니다.
- 작업의 서비스 계정에 로그 작성자(
roles/logging.logWriter
) IAM 역할이 부여되었는지 확인합니다. 자세한 내용은 프로젝트에 Batch 사용 설정을 참조하세요. - gcloud CLI 또는 Batch API를 사용하여 작업 세부정보를 확인합니다.
작업 세부정보는 작업에서 로그를 생성하지 않은 이유를 이해하는 데 도움이 되며 로그에서 가져오려는 정보를 얻을 수 있습니다. 예를 들어 다음을 수행합니다.
- 로깅이 사용 설정되었는지 확인하려면 작업의
logsPolicy
필드를 검토합니다. - 작업이 성공적으로 실행을 마쳤는지 확인하려면 작업의
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 서비스 에이전트에 보고하기 위한 현재 종속 항목을 제공하는 소프트웨어가 필요합니다.
솔루션
문제를 해결하려면 다음 단계를 따르세요.
작업의 VM에 상태를 Batch 서비스 에이전트에 보고하는 데 필요한 권한이 있는지 확인합니다.
- 작업의 서비스 계정을 확인하려면 gcloud CLI 또는 Batch API를 사용하여 작업의 세부정보를 확인합니다. 서비스 계정이 표시되지 않으면 작업은 기본적으로 Compute Engine 기본 서비스 계정을 사용합니다.
작업의 서비스 계정에 Batch 에이전트 보고자 역할(
roles/batch.agentReporter
)에 대한 권한이 있는지 확인합니다. 자세한 내용은 액세스 관리 및 서비스 계정 사용 제한을 참조하세요.예를 들어 필요한 권한을 Compute Engine 기본 서비스 계정에 부여하려면 다음 명령어를 사용합니다.
gcloud projects add-iam-policy-binding PROJECT_ID \ --role roles/batch.agentReporter \ --member serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com
작업의 VM에 적절한 네트워크 액세스 권한이 있는지 확인합니다. 자세한 내용은 Batch 네트워킹 개요 및 일반적인 네트워킹 문제 해결을 참조하세요.
작업에 VM OS 이미지를 지정한 경우 VM OS 이미지가 현재 지원되는지 확인합니다.
작업에 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
).
최신 VM OS 이미지를 사용하면 이 문제를 해결할 수 있습니다. 작업에서 커스텀 이미지를 사용하는 경우 지원되는 공개 이미지의 최신 버전 중 하나를 기반으로 커스텀 이미지를 다시 만듭니다.
자세한 내용은 지원되는 VM OS 이미지 및 VM OS 이미지 보기를 참조하세요.
작업을 다시 만듭니다.
Cloud Monitoring에 리소스 측정항목 누락
문제
작업의 리소스 측정항목을 확인하려고 하는데 원하는 측정항목의 일부 또는 전부가 누락되어 있습니다.
이 문제가 발생하는 이유는 다음과 같습니다.
- 프로젝트에 API가 사용 설정되지 않았습니다. 프로젝트의 다른 모든 항목을 올바르게 구성하더라도 Cloud Monitoring API가 사용 설정되지 않으면 리소스 측정항목이 표시되지 않을 수 있습니다. 운영 에이전트의 경우 Cloud Logging API도 사용 설정해야 합니다.
- 측정항목을 볼 권한이 없습니다. 권한이 부족하면 측정항목을 볼 수 없습니다.
- 작업의 VM이 실행되지 않았습니다. 하나 이상의 작업 VM이 실행되기 전에는 작업에 대한 측정항목을 생성할 수 없습니다.
- 작업의 구성 또는 권한이 운영 에이전트 측정항목을 지원하지 않습니다. 일부 리소스 측정항목은 운영 에이전트에서만 제공될 수 있습니다. 운영 에이전트 측정항목을 지원하기 위해서는 작업이 운영 에이전트의 요구사항을 충족하고 운영 에이전트를 설치하고 측정항목을 Monitoring에 쓸 수 있는 서비스 계정을 사용해야 합니다.
- 측정항목을 보려면 다른 방법이나 필터를 사용해야 합니다. 측정항목을 보기 위한 일부 방법에서는 VM이 삭제된 후 VM의 측정항목을 표시하지 않습니다. 또한 필터 또는 표시된 기간에 의해 생략된 측정항목은 표시되지 않습니다. 또한, 측정항목 그래프의 조정 가능한 해상도로 인해 표시하기에는 데이터가 너무 적을 수 있습니다.
- 측정항목이 삭제되었습니다. Monitoring 보관 기간 후에 자동으로 측정항목이 삭제되는데 삭제된 후에는 측정항목을 볼 수 없습니다.
솔루션
운영 에이전트 측정항목만 누락된 경우 먼저 다음을 수행하여 문제를 해결해 보세요.
- 다음을 수행하여 작업의 구성을 확인합니다.
- 작업의 전체 구성 정보를 보려면 gcloud CLI 또는 Batch API를 사용하여 작업 세부정보를 확인합니다. 나머지 단계에서 출력을 사용합니다.
- 작업의 서비스 계정에 운영 에이전트 측정항목을 쓸 수 있는 권한이 있는지 확인합니다.
- 작업이 모든 운영 에이전트 요구사항을 충족하는지 확인합니다.
- 작업이 운영 에이전트를 올바르게 설치하는지 확인합니다. 실행 가능 항목에 운영 에이전트를 수동으로 설치할 수 있지만
installOpsAgent
필드를true
로 설정하여 운영 에이전트를 자동으로 설치하는 것이 좋습니다.
- 문제가 계속되면 Google Cloud Observability 문서의 운영 에이전트 문제 해결을 참조하세요.
또는 다음을 수행하여 문제를 해결합니다.
- 프로젝트에 Monitoring API가 사용 설정되어 있는지 확인합니다.
- 작업의 VM 실행이 시작되었고 런타임이 여전히 Monitoring 보관 기간 내에 있는지 확인합니다. 작업 세부정보를 확인하여 작업의 실행 시간을 확인할 수 있습니다.
- 다음을 수행하여 측정항목을 보는 데 사용하는 방법에 문제가 없는지 확인합니다.
- 문제가 계속되면 Google Cloud Observability 문서의 Cloud Monitoring 문제 해결 페이지를 참조하세요.
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
조직 정책 제약조건을 설정했기 때문에 발생합니다.
솔루션
문제를 해결하려면 작업을 다시 만들고 다음 중 하나를 수행합니다.
- 제약조건에서 제외된 프로젝트를 사용하기
- 모든 VM에 대한 외부 액세스를 차단하는 작업 만들기
신뢰할 수 있는 이미지에 대한 제약조건 위반
문제
실패한 작업의 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
이 문제는 작업의 인스턴스 템플릿에 있는 불분명한 문제로 인해 발생합니다.
솔루션
문제를 추가로 디버깅하려면 다음 단계를 따르세요.
- 인스턴스 템플릿을 사용하여 MIG를 만들고 추가 세부정보와 함께 오류가 발생하는지 확인합니다.
선택사항: 자세한 정보를 확인하려면 Google Cloud 콘솔에서 MIG를 만드는 장기 실행 작업을 참조하세요.
태스크 실패 종료 코드
작업의 특정 태스크가 실패하면 태스크는 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이 런타임 중에 예기치 않게 다시 생성될 때 발생합니다.
솔루션
이 문제를 해결하려면 자동화된 태스크 재시도를 사용하거나 작업을 수동으로 다시 실행하여 태스크를 재시도합니다.