이 문서에서는 인스턴스 유연성을 사용하는 일괄 작업을 만들고 실행하는 방법을 설명합니다. 인스턴스 유연성을 사용하면 지정하고 선택적으로 순위를 지정한 여러 머신 유형에서 작업을 실행할 수 있습니다.
작업에 더 많은 머신 유형을 허용하면 인스턴스 유연성을 사용하여 리소스를 사용할 수 있는 확률인 확보 가능성을 개선할 수 있습니다. 워크로드에 사용할 획득 가능성 기능을 선택하는 방법에 대한 자세한 내용은 리소스 획득 가능성 개선을 참고하세요. 예를 들어 인스턴스 유연성을 사용하면 다음 작업을 수행할 수 있습니다.
- 리소스 가용성 오류 및 관련 일정 지연의 가능성을 줄입니다.
- 작업이 더 빨리 완료되도록 획득 가능성이 높은 리소스를 선택합니다. 예를 들면 다음과 같습니다.
시작하기 전에
- Batch를 사용한 적이 없으면 Batch 시작하기를 검토하고 프로젝트 및 사용자 기본 요건을 완료하여 Batch를 사용 설정하세요.
-
작업을 만드는 데 필요한 권한을 얻으려면 관리자에게 다음 IAM 역할을 부여해 달라고 요청하세요.
- 프로젝트에 대한 Batch 작업 편집자 (
roles/batch.jobsEditor) - 기본적으로 기본 Compute Engine 서비스 계정인 작업의 서비스 계정에 대한 서비스 계정 사용자 (
roles/iam.serviceAccountUser)
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
- 프로젝트에 대한 Batch 작업 편집자 (
제한사항
작업에서 인스턴스 유연성을 사용하는 경우 다음 제한사항이 모두 적용됩니다.
작업에서 사용할 수 있는 머신 유형의 수가 많을수록 확보 가능성이 높아집니다.
작업에서
FLEX_START프로비저닝 모델 또는RESERVATION_BOUND프로비저닝 모델을 지정할 수 없습니다.작업에서 구체적으로 타겟팅된 예약을 사용할 수 없습니다. (
reservation필드는 정의되지 않거나NO_RESERVATION로 설정되어야 합니다.)구체적으로 타겟팅된 예약에는
RESERVATION_BOUND프로비저닝 모델의 모든 예약과STANDARD프로비저닝 모델의 일부 예약이 포함됩니다. 인스턴스 생성은 예약의 머신 유형에 대해서만 성공할 수 있으므로 이러한 기능은 본질적으로 호환되지 않습니다.각 작업에는 최대 50개의 인스턴스 선택이 있을 수 있습니다.
작업의 각 인스턴스 선택에는 고유한 이름, 고유한 순위, 하나 이상의 고유한 머신 유형이 있어야 합니다.
머신 유형은 반복될 수 없습니다. 작업당 하나의 인스턴스 선택에 각 머신 유형을 포함하세요.
각 작업은 인스턴스 선택에서 최대 200개의 고유한 머신 유형을 가질 수 있습니다.
동일한 인스턴스 선택에서 여러 머신 유형을 지정하는 것은 선택사항이지만, 획득 가능성이 높은 리소스를 원하는 경우에는 필수입니다.
- 배치는 순위의 인스턴스 선택에 머신 유형이 여러 개 있는 경우에만 획득 가능성이 가장 높은 머신 유형을 하나 이상 선택하려고 시도합니다. 예를 들어 작업에 선점될 가능성이 낮은 스팟 VM이 있거나 작업을 병렬로 실행할 수 있는 인스턴스가 더 많은 경우 이 선택이 중요합니다.
- 그렇지 않고 순위의 인스턴스 선택에 머신 유형이 하나만 있는 경우 인스턴스 유연성은 리소스 가용성 오류를 방지하는 데만 도움이 됩니다.
작업에
machineType필드가 포함될 수 없으며 작업에서 지정하는 인스턴스 템플릿의 머신 유형은 무시됩니다.작업에 지정한 모든 속성이 허용된 모든 머신 유형과 호환되는지 확인해야 합니다. 그렇지 않으면 인스턴스를 만들 수 없으므로 작업을 제출한 후 실패할 수 있습니다. 예를 들어 작업의 다음 속성이 모든 머신 유형과 호환되는지 확인하는 것이 좋습니다.
- 위치 (지정된 경우
allowedLocations[]필드, 그렇지 않은 경우location) - 태스크당 컴퓨팅 리소스 (
computeResource필드) - 디스크 및 이미지 (
volumes[]필드,disk[]필드,bootDisk필드) - 네트워크 (
network필드) 기타 모든 인스턴스 속성 (
instances[]하위 필드):- 최소 CPU 플랫폼 (
minCpuPlatform필드) - 프로비저닝 모델 (
provisioningModel필드) - GPU (
accelerators[]필드)
- 최소 CPU 플랫폼 (
- 위치 (지정된 경우
일괄 작업의 경우 디스크 및 최소 CPU 플랫폼을 재정의할 수 없습니다. 모든 머신 유형은 지정된 값 (
policy하위 필드 또는 인스턴스 템플릿)을 사용하거나, 지정되지 않은 경우 우선순위가 가장 높은 인스턴스 선택의 머신 유형에 대한 기본값을 사용합니다. 따라서 다음을 모두 실행하는 것이 좋습니다.부팅 디스크 유형이 허용된 모든 머신 유형과 호환되는지 확인합니다. 요약하자면 4세대 이후 머신 유형은 영구 디스크를 지원하지 않고, 2세대 이전 머신 유형은 Hyperdisk를 지원하지 않으며, 3세대 이전 머신 유형은 기본적으로 영구 부팅 디스크를 사용합니다.
허용된 모든 머신 유형에서 지원되는지 확인하지 않은 경우 최소 CPU 플랫폼이나 선택적 디스크를 지정하지 마세요.
여러 머신 유형을 사용할 수 있는 작업 만들기
여러 머신 유형을 사용할 수 있는 작업을 만들려면 다음 방법 중 하나를 선택하세요.
gcloud
Google Cloud CLI를 사용하여 작업을 만드는 동안 여러 머신 유형을 구성하려면 다음 단계를 완료하세요.
작업의 구성 세부정보를 지정하는 JSON 파일의
allocationPolicy필드에instanceFlexibilityPolicy필드와 하위 필드를 포함합니다.instanceFlexibilityPolicy필드는 하나 이상의 인스턴스 선택을 지원하며, 각 인스턴스 선택에는 고유한 이름, 고유한 순위, 하나 이상의 머신 유형 목록이 있습니다."allocationPolicy":{ "instanceFlexibilityPolicy":{ "instanceSelections":{ "INSTANCE_SELECTION_NAME":{ "rank": RANK, "machineTypes": [MACHINE_TYPES] } } } }다음을 바꿉니다.
INSTANCE_SELECTION_NAME: 인스턴스 선택의 이름입니다. 작업에 인스턴스 선택이 여러 개 있는 경우 이 작업의 각 이름이 고유해야 합니다.RANK: 선택사항: 이 인스턴스 선택의 우선순위를 나타내는 0 이상의 정수입니다. 값이 가장 낮은 것이 우선순위가 가장 높습니다. 지정되지 않은 경우 기본값은0(최고 우선순위)입니다. 작업에 인스턴스 선택사항이 여러 개인 경우 이 작업의 각 순위가 고유해야 합니다.MACHINE_TYPES: 이 인스턴스 선택을 위한 하나 이상의 머신 유형의 쉼표로 구분된 목록입니다. 머신 유형은 문자열로 작성됩니다. 작업당 하나의 인스턴스 선택에만 각 머신 유형을 포함할 수 있습니다. 예를 들어 머신 유형 3개의 목록은 다음과 같이 작성할 수 있습니다."MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"MACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3을 각각 머신 유형으로 바꿉니다(예:e2-micro,e2-small,n1-standard-2).
자세한 내용은 예시 작업을 참고하세요.
이 기능이 미리보기 상태인 동안에는
gcloud alpha batch jobs submit명령어를 사용하여 작업을 만들고 제출해야 합니다.gcloud alpha batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE다음을 바꿉니다.
JOB_NAME: 작업의 이름LOCATION: 작업의 위치JSON_CONFIGURATION_FILE: 작업의 구성 세부정보가 포함된 JSON 파일의 경로입니다.
REST
Batch API를 사용하여 여러 머신 유형을 사용하는 작업을 만들려면 이 기능이 미리보기 상태일 때 v1alpha jobs.create 메서드를 사용합니다.
작업에 여러 머신 유형을 지정하려면 JSON 파일의 기본 본문에 있는 allocationPolicy 필드에 instanceFlexibilityPolicy 필드와 하위 필드를 포함하세요.
instanceFlexibilityPolicy 필드는 하나 이상의 인스턴스 선택을 지원하며, 각 인스턴스에는 고유한 이름, 고유한 순위, 하나 이상의 머신 유형 목록이 있습니다.
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"INSTANCE_SELECTION_NAME":{
"rank": RANK,
"machineTypes": [MACHINE_TYPES]
}
}
}
}
다음을 바꿉니다.
INSTANCE_SELECTION_NAME: 인스턴스 선택사항 이름입니다. 작업에 인스턴스 선택이 여러 개 있는 경우 이 작업의 각 이름이 고유해야 합니다.RANK: 선택사항: 이 인스턴스 선택의 우선순위를 나타내는 0 이상의 정수입니다. 값이 가장 낮으면 우선순위가 가장 높습니다. 지정되지 않은 경우 기본값은0(최고 우선순위)입니다. 작업에 인스턴스 선택이 여러 개 있는 경우 이 작업의 각 순위가 고유해야 합니다.MACHINE_TYPES: 이 인스턴스 선택을 위한 하나 이상의 머신 유형의 쉼표로 구분된 목록입니다. 머신 유형은 문자열로 작성됩니다. 작업당 하나의 인스턴스 선택에만 각 머신 유형을 포함할 수 있습니다. 예를 들어 머신 유형 3개의 목록은 다음과 같이 작성할 수 있습니다."MACHINE_TYPE_1", "MACHINE_TYPE_2", "MACHINE_TYPE_3"MACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3을 각각 머신 유형으로 바꿉니다(예:e2-micro,e2-small,n1-standard-2).
자세한 내용은 예시 작업을 참고하세요.
작업 JSON 구성 파일 예시
예를 들어 gcloud CLI 또는 Batch API를 사용하는 경우 다음 JSON 구성 파일을 사용하여 인스턴스 선택이 두 개인 기본 스크립트 작업을 만들 수 있습니다.
first-choice라는 인스턴스 선택에는 최우선순위 ("rank": 0)와 세 가지 머신 유형 (e2-micro,e2-small,n1-standard-2)이 있습니다.second-choice라는 인스턴스 선택에는 두 번째 우선순위("rank": 1)와 머신 유형 하나 (e2-medium)가 있습니다.
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello World! This is task $BATCH_TASK_INDEX."
}
}
]
},
"taskCount": 3
}
],
"allocationPolicy":{
"instanceFlexibilityPolicy":{
"instanceSelections":{
"first-choice":{
"rank": 0,
"machineTypes": ["e2-micro", "e2-small", "n1-standard-2"]
},
"second-choice":{
"rank": 1,
"machineTypes": ["e2-medium"]
}
}
}
}
}
다음 단계
- 작업을 만들거나 실행하는 데 문제가 있는 경우 문제 해결을 참조하세요.
- 작업 및 태스크 보기
- 작업 만들기 옵션 자세히 알아보기