이 문서에서는 라벨을 사용하여 Batch 리소스를 구성하는 방법을 설명합니다.
라벨은 리소스를 그룹화하고 설명하기 위해 적용되는 키-값 쌍입니다. Batch에는 리소스에 자동으로 적용되는 사전 정의된 라벨과 작업을 만들 때 정의하고 적용할 수 있는 커스텀 라벨이 있습니다.
라벨을 사용하면 리소스 목록 및 Cloud Billing 보고서의 결과를 필터링할 수 있습니다. 예를 들어 라벨을 사용하여 다음을 수행할 수 있습니다.
프로젝트의 작업 목록을 명확하게 정리하고 구성합니다.
라벨을 사용하여 지정한 컨테이너 또는 스크립트 유형을 설명하여 작업의 실행 가능 항목을 구분합니다.
Batch 또는 특정 작업으로 만든 리소스에 대한 Cloud Billing 보고서를 필터링하여 비용을 분석합니다.
라벨에 대한 자세한 내용은 라벨에 대한 Compute Engine 문서를 참조하세요.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
-
프로젝트에 대한 일괄 작업 편집자(
roles/batch.jobsEditor
) -
기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자(
roles/iam.serviceAccountUser
)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
-
프로젝트에 대한 일괄 작업 편집자(
제한사항
Compute Engine 문서에 지정된 라벨 요구사항 외에도 Batch 작업 및 리소스에 라벨을 적용하면 다음과 같은 제한사항이 있습니다.
Batch는 Batch를 사용하여 만든 다음 유형의 리소스에 대한 라벨만 지원합니다.
작업
실행 가능 항목
작업의 그래픽 처리 장치(GPU)(있는 경우)
작업의 가상 머신(VM) 인스턴스
Batch는 작업에 자동으로 적용하는 사전 정의된 라벨을 고려한 후 다음과 같은 양의 커스텀 라벨을 정의할 수 있습니다.
작업 및 실행 가능 항목에 적용할 커스텀 라벨을 최대 63개까지 정의할 수 있습니다.
작업을 위해 만든 각 GPU, 영구 디스크, VM에 적용할 커스텀 라벨을 최대 61개까지 정의할 수 있습니다.
Batch는 고유한 이름의 커스텀 라벨 정의만 지원합니다. 이로 인한 결과는 다음과 같습니다.
사전 정의된 라벨을 재정의하려고 시도하면 오류가 발생합니다.
중복 커스텀 라벨을 정의하면 기존 커스텀 라벨이 재정의됩니다.
Batch는 작업을 만들 때 라벨 정의만 지원합니다.
작업 및 실행 가능 항목의 라벨을 추가, 업데이트, 삭제할 수 없습니다.
Compute Engine을 사용하여 작업에 만든 영구 디스크 및 VM의 라벨을 추가, 업데이트, 삭제할 수 있지만 권장되지 않습니다. 작업 리소스가 존재하는 기간이 안정적으로 예측될 수 없으며 Batch에서 변경사항이 제대로 작동하지 않을 수 있습니다.
라벨을 사용하여 작업 목록을 필터링하려면 gcloud CLI 또는 Batch API를 사용하여 작업 목록을 확인해야 합니다.
사전 정의된 라벨
사전 정의된 각 라벨에는 batch-
프리픽스로 시작하는 키가 있습니다. 기본적으로 Batch는 다음과 같은 사전 정의된 라벨을 자동으로 적용합니다.
만드는 각 작업에 다음이 적용됩니다.
batch-job-id
: 이 라벨의 값은 작업 이름으로 설정됩니다.
작업을 위해 만든 각 GPU, 영구 디스크, VM에 다음이 적용됩니다.
batch-job-id
: 이 라벨의 값은 작업 이름으로 설정됩니다.batch-job-uid
: 이 라벨의 값은 작업의 고유 식별자(UID)로 설정됩니다.batch-node
: 이 라벨의 값은 null입니다. 단순히 작업을 위해 만든 모든 GPU, 영구 디스크, VM을 그룹화합니다. 예를 들어 Cloud Billing 보고서를 볼 때 이 라벨을 사용하여 Batch에서 만든 모든 GPU, 영구 디스크, VM의 비용을 확인합니다.
커스텀 라벨 정의
작업을 만들 때 선택적으로 하나 이상의 커스텀 라벨을 정의할 수 있습니다. 프로젝트에서 이미 사용하는 새 키 또는 키로 커스텀 라벨을 정의할 수 있습니다. 커스텀 라벨을 정의하려면 라벨의 용도에 따라 이 문서에서 다음 방법 중 하나 이상을 선택합니다.
-
이 섹션에서는 하나 이상의 커스텀 라벨을 작업과 작업용으로 만든 각 GPU, 영구 디스크, VM에 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 Cloud Billing 보고서와 프로젝트의 작업 목록, 영구 디스크, VM을 필터링할 수 있습니다.
-
이 섹션에서는 작업에 하나 이상의 커스텀 라벨을 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 프로젝트의 작업 목록을 필터링할 수 있습니다.
-
이 섹션에서는 작업에 대한 하나 이상의 실행 가능 항목에 하나 이상의 커스텀 라벨을 적용하는 방법을 설명합니다. 작업을 만든 후 이러한 라벨을 사용하여 프로젝트의 작업 목록을 필터링할 수 있습니다.
작업 및 해당 리소스의 커스텀 라벨 정의
작업의 할당 정책을 위해 labels
필드에 정의된 라벨은 작업뿐만 아니라 각 GPU(있는 경우), 영구 디스크(모든 부팅 디스크 및 새 스토리지 볼륨), 작업을 위해 만든 VM에도 적용됩니다.
작업을 만들 때 gcloud CLI 또는 Batch API를 사용하여 작업 및 해당 리소스의 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1
에서 작업에 적용되는 두 개의 커스텀 라벨과 작업에 생성된 리소스를 정의하는 기본 컨테이너 작업을 만들려면 다음 단계를 수행합니다.
작업의 구성 세부정보와
allocationPolicy.labels
필드를 지정하는 JSON 파일을 만듭니다.{ "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4" } } ], "labels": { "VM_LABEL_NAME1": "VM_LABEL_VALUE1", "VM_LABEL_NAME2": "VM_LABEL_VALUE2" } }, "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello world!" ] } } ] } } ] }
다음을 바꿉니다.
VM_LABEL_NAME1
: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 이름VM_LABEL_VALUE1
: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 값VM_LABEL_NAME2
: 작업용으로 만든 VM에 적용할 두 번째 라벨의 이름VM_LABEL_VALUE2
: 작업용으로 만든 VM에 적용할 두 번째 라벨의 값
gcloud batch jobs submit
명령어를 사용하여us-central1
에서 작업을 만듭니다.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
JSON_CONFIGURATION_FILE
을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1
에서 작업과 작업용으로 만든 리소스에 적용되는 두 개의 커스텀 라벨을 정의하는 기본 컨테이너 작업을 만들려면 jobs.create
메서드에 대한 POST
요청을 수행하고 allocationPolicy.labels
필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4"
}
}
],
"labels": {
"VM_LABEL_NAME1": "VM_LABEL_VALUE1",
"VM_LABEL_NAME2": "VM_LABEL_VALUE2"
}
},
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello world!"
]
}
}
]
}
}
]
}
다음을 바꿉니다.
VM_LABEL_NAME1
: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 이름VM_LABEL_VALUE1
: 작업용으로 만든 VM에 적용할 첫 번째 라벨의 값VM_LABEL_NAME2
: 작업용으로 만든 VM에 적용할 두 번째 라벨의 이름VM_LABEL_VALUE2
: 작업용으로 만든 VM에 적용할 두 번째 라벨의 값
Java
Node.js
Python
작업의 커스텀 라벨 정의
작업의 labels
필드에 정의된 라벨은 작업에만 적용됩니다.
gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 작업 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1
에서 작업 자체에 적용되는 두 개의 커스텀 라벨을 정의하는 기본 컨테이너 작업을 만들려면 다음 단계를 따르세요.
작업의 구성 세부정보와
labels
필드를 지정하는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello World!" ] } } ] } } ], "labels": { "JOB_LABEL_NAME1": "JOB_LABEL_VALUE1", "JOB_LABEL_NAME2": "JOB_LABEL_VALUE2" } }
다음을 바꿉니다.
JOB_LABEL_NAME1
: 작업에 적용할 첫 번째 라벨의 이름JOB_LABEL_VALUE1
: 작업에 적용할 첫 번째 라벨의 값JOB_LABEL_NAME2
: 작업에 적용할 두 번째 라벨의 이름JOB_LABEL_VALUE2
: 작업에 적용할 두 번째 라벨의 값
gcloud batch jobs submit
명령어를 다음 플래그와 함께 사용하여us-central1
에서 작업을 만듭니다.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
JSON_CONFIGURATION_FILE
을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1
에서 작업 자체에 적용할 두 개의 커스텀 라벨을 정의하는 컨테이너 작업을 만들려면 jobs.create
메서드에 대한 POST
요청을 만들고 labels
필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello World!"
]
}
}
]
}
}
],
"labels": {
"JOB_LABEL_NAME1": "JOB_LABEL_VALUE1",
"JOB_LABEL_NAME2": "JOB_LABEL_VALUE2"
}
}
다음을 바꿉니다.
JOB_LABEL_NAME1
: 작업에 적용할 첫 번째 라벨의 이름JOB_LABEL_VALUE1
: 작업에 적용할 첫 번째 라벨의 값JOB_LABEL_NAME2
: 작업에 적용할 두 번째 라벨의 이름JOB_LABEL_VALUE2
: 작업에 적용할 두 번째 라벨의 값
Java
Node.js
Python
실행 가능 항목의 커스텀 라벨 정의
실행 가능 항목의 labels
필드에 정의된 라벨은 해당 실행 가능 항목에만 적용됩니다.
gcloud CLI 또는 Batch API를 사용하여 작업을 만들 때 하나 이상의 실행 가능 항목에 라벨을 정의할 수 있습니다.
gcloud
예를 들어 us-central1
에서 두 개의 커스텀 라벨(두 작업의 각 실행 가능 항목에 커스텀 라벨 하나)을 정의하는 작업을 만들려면 다음 단계를 따르세요.
작업의 구성 세부정보와
runnables.labels
필드를 지정하는 JSON 파일을 만듭니다.{ "taskGroups": [ { "taskSpec": { "runnables": [ { "container": { "imageUri": "gcr.io/google-containers/busybox", "entrypoint": "/bin/sh", "commands": [ "-c", "echo Hello from task ${BATCH_TASK_INDEX}!" ] }, "labels": { "RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1" } }, { "script": { "text": "echo Hello from task ${BATCH_TASK_INDEX}!" }, "labels": { "RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1" } } ] } } ] }
다음을 바꿉니다.
RUNNABLE1_LABEL_NAME1
: 작업의 첫 번째 실행 가능 항목에 적용할 라벨의 이름RUNNABLE1_LABEL_VALUE1
: 작업의 첫 번째 실행 가능 항목에 적용할 라벨의 값RUNNABLE2_LABEL_NAME1
: 작업의 두 번째 실행 가능 항목에 적용할 라벨의 이름RUNNABLE2_LABEL_VALUE1
: 작업의 두 번째 실행 가능 항목에 적용할 라벨의 값
gcloud batch jobs submit
명령어를 사용하여us-central1
에서 작업을 만듭니다.gcloud batch jobs submit example-job \ --config=JSON_CONFIGURATION_FILE \ --location=us-central1
JSON_CONFIGURATION_FILE
을 이전 단계에서 만든 작업의 구성 세부정보가 있는 JSON 파일의 경로로 바꿉니다.
API
예를 들어 us-central1
에서 두 작업의 실행 가능 항목 각각에 하나씩 두 개의 커스텀 라벨을 정의하는 작업을 만들려면 jobs.create
메서드에 POST
요청을 만들고 runnables.labels
필드를 지정합니다.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"container": {
"imageUri": "gcr.io/google-containers/busybox",
"entrypoint": "/bin/sh",
"commands": [
"-c",
"echo Hello from ${BATCH_TASK_INDEX}!"
]
},
"labels": {
"RUNNABLE1_LABEL_NAME1": "RUNNABLE1_LABEL_VALUE1"
}
},
{
"script": {
"text": "echo Hello from ${BATCH_TASK_INDEX}!"
},
"labels": {
"RUNNABLE2_LABEL_NAME1": "RUNNABLE2_LABEL_VALUE1"
}
}
]
}
}
]
}
다음을 바꿉니다.
RUNNABLE1_LABEL_NAME1
: 첫 번째 작업의 실행 가능 항목에 적용할 라벨의 이름RUNNABLE1_LABEL_VALUE1
: 첫 번째 작업의 실행 가능 항목에 적용할 라벨의 값RUNNABLE2_LABEL_NAME1
: 두 번째 작업의 실행 가능 항목에 적용할 라벨의 이름RUNNABLE2_LABEL_VALUE1
: 두 번째 작업의 실행 가능 항목에 적용할 라벨의 값
Java
Node.js
Python
다음 단계
다음을 수행할 때 라벨을 필터로 사용합니다.
작업 삭제 방법 알아보기