이 문서에서는 MIG에서 일괄 모드를 사용하여 필요한 모든 가상 머신 (VM) 인스턴스를 동시에 만드는 방법을 설명합니다. 한 번에 인스턴스를 만들면 필요한 모든 리소스를 사용할 수 있을 때만 MIG에서 인스턴스를 만듭니다.
일괄 모드의 작동 방식을 알아보려면 MIG에서 인스턴스 일괄 생성 정보를 참고하세요.
인스턴스 템플릿 만들기
MIG의 일괄 모드는 예약에 따름 또는 flex-start 프로비저닝 모델을 지정하는 인스턴스 템플릿에서만 지원됩니다. 일괄 모드를 사용하려면 다음 섹션에 설명된 대로 이러한 프로비저닝 모델 중 하나를 사용하여 인스턴스 템플릿을 만드세요. 프로비저닝 모델에 대한 자세한 내용은 Compute Engine 인스턴스 프로비저닝 모델을 참고하세요.
'예약에 따름' 프로비저닝 모델 사용
인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.
인스턴스 템플릿 만들기를 클릭합니다. 인스턴스 템플릿 만들기 페이지가 열립니다.
이름 필드에 인스턴스 템플릿의 이름을 입력합니다.
위치 섹션에서 다음 옵션 중 하나를 선택합니다.
리전 인스턴스 템플릿을 만들려면 리전(권장)을 선택한 후 템플릿을 만들 리전을 선택합니다.
전역 인스턴스 템플릿을 만들려면 전역을 선택합니다.
머신 구성 섹션에서 머신 유형을 지정합니다.
프로비저닝 모델 섹션에서 다음 단계를 완료합니다.
VM 프로비저닝 모델 고급 설정을 펼칩니다.
VM 종료 시 목록에서 삭제를 선택합니다.
(선택사항) 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 다음 안내에 따라 부팅 디스크를 변경합니다.
고급 옵션 섹션을 펼친 후 다음을 수행합니다.
관리 섹션을 펼칩니다.
예약 섹션에서 예약 선택을 선택한 다음 예약 선택을 클릭합니다. 표시되는 창에서 메시지에 따라 사용할 예약 리소스를 선택합니다.
만들기를 클릭합니다.
gcloud
인스턴스 템플릿을 만들려면 다음 플래그 설정과 함께 instance-templates create 명령어를 사용합니다.
DELETE로 설정된--instance-termination-action플래그TERMINATE로 설정된--maintenance-policy플래그RESERVATION_BOUND로 설정된--provisioning-model플래그specific로 설정된--reservation-affinity플래그--reservation플래그
다음 예시 명령어는 리전 인스턴스 템플릿을 만듭니다. 전역 인스턴스 템플릿을 만들려면 --instance-template-region 플래그 없이 같은 명령어를 사용합니다.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-termination-action=DELETE \
--instance-template-region=REGION \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--provisioning-model=RESERVATION_BOUND \
--reservation-affinity=specific \
--reservation=RESERVATION_URL
다음을 바꿉니다.
INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예:debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.IMAGE_FAMILY: 이미지 계열입니다. 지원 중단되지 않은 최신 OS 이미지를 사용하려면 이미지 계열을 지정하세요. 예를 들어debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.REGION: 인스턴스 템플릿을 만들 리전MACHINE_TYPE: 사용할 예약에 지정된 머신 유형RESERVATION_URL: 사용할 캘린더 모드의 미래용 예약에 대해 자동 생성된 예약의 URL 다음 값 중 하나를 지정합니다.자동 생성된 예약이 프로젝트에 있는 경우:
RESERVATION_NAME자동 생성된 예약이 다른 프로젝트에 있는 경우:
projects/PROJECT_ID/reservations/RESERVATION_NAME
REST
인스턴스 템플릿을 만들려면 POST 요청을 다음 메서드 중 하나에 보냅니다.
리전 인스턴스 템플릿을 만들려면
regionInstanceTemplates.insert메서드를 사용합니다.전역 인스턴스 템플릿을 만들려면
instanceTemplates.insert메서드를 사용합니다.
요청 본문에 다음 필드를 포함합니다.
SPECIFIC_RESERVATION으로 설정된reservationAffinity.consumeReservationType필드compute.googleapis.com/reservation-name으로 설정된reservationAffinity.key필드자동 생성된 예약의 URL로 설정된
reservationAffinity.values필드DELETE로 설정된scheduling.instanceTerminationAction필드TERMINATE로 설정된scheduling.onHostMaintenance필드RESERVATION_BOUND로 설정된scheduling.provisioningModel필드
예를 들어 리전 인스턴스 템플릿을 만들려면 다음과 같이 요청합니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "SPECIFIC_RESERVATION",
"key": "compute.googleapis.com/reservation-name",
"values": [
"RESERVATION_URL"
]
},
"scheduling": {
"instanceTerminationAction": "DELETE",
"onHostMaintenance": "TERMINATE",
"provisioningModel": "RESERVATION_BOUND"
}
}
}
다음을 바꿉니다.
PROJECT_ID: 인스턴스 템플릿을 만들 프로젝트의 IDREGION: 인스턴스 템플릿을 만들 리전입니다.INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예:debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.IMAGE: 다음 중 하나를 지정합니다.OS 이미지의 특정 버전입니다(예:
debian-12-bookworm-v20240617).이미지 계열이며 형식은
family/IMAGE_FAMILY여야 합니다. 지원 중단되지 않은 최신 OS 이미지를 사용하려면 이미지 계열을 지정하세요. 예를 들어family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.
MACHINE_TYPE: 사용할 예약에 지정된 머신 유형RESERVATION_URL: 사용할 캘린더 모드의 미래용 예약에 대해 자동 생성된 예약의 URL 다음 값 중 하나를 지정합니다.자동 생성된 예약이 프로젝트에 있는 경우:
RESERVATION_NAME자동 생성된 예약이 다른 프로젝트에 있는 경우:
projects/PROJECT_ID/reservations/RESERVATION_NAME
인스턴스 템플릿 만들기에 대한 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.
flex-start(유연한 시작) 프로비저닝 모델 사용
인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.
인스턴스 템플릿 만들기를 클릭합니다. 인스턴스 템플릿 만들기 페이지가 열립니다.
이름 필드에 인스턴스 템플릿의 이름을 입력합니다.
위치 섹션에서 다음 옵션 중 하나를 선택합니다.
리전 인스턴스 템플릿을 만들려면 리전(권장)을 선택한 후 템플릿을 만들 리전을 선택합니다.
전역 인스턴스 템플릿을 만들려면 전역을 선택합니다.
머신 구성 섹션에서 머신 유형을 지정합니다.
프로비저닝 모델 섹션에서 다음 단계를 완료합니다.
VM 프로비저닝 모델 필드에서 유연한 시작을 선택합니다.
VM 프로비저닝 모델 고급 설정을 펼칩니다.
VM 시간 제한 설정 체크박스를 선택합니다.
인스턴스 템플릿을 사용하여 생성된 VM의 실행 기간을 설정하려면 시간 입력 필드에 시간을 입력합니다. 값은 36초(
0.01)에서 7일(168) 사이여야 합니다.
(선택사항) 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 다음 안내에 따라 부팅 디스크를 변경합니다.
만들기를 클릭합니다.
gcloud
인스턴스 템플릿을 만들려면 다음 플래그 설정과 함께 instance-templates create 명령어를 사용합니다.
DELETE로 설정된--instance-termination-action플래그TERMINATE로 설정된--maintenance-policy플래그--max-run-duration플래그FLEX_START로 설정된--provisioning-model플래그none로 설정된--reservation-affinity플래그
다음 예시 명령어는 리전 인스턴스 템플릿을 만듭니다. 전역 인스턴스 템플릿을 만들려면 --instance-template-region 플래그 없이 같은 명령어를 사용합니다.
gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
--image-project=IMAGE_PROJECT \
--image-family=IMAGE_FAMILY \
--instance-template-region=REGION \
--instance-termination-action=DELETE \
--machine-type=MACHINE_TYPE \
--maintenance-policy=TERMINATE \
--max-run-duration=RUN_DURATION \
--provisioning-model=FLEX_START \
--reservation-affinity=none
다음을 바꿉니다.
INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예:debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.IMAGE_FAMILY: 이미지 계열입니다. 지원 중단되지 않은 최신 OS 이미지를 사용하려면 이미지 계열을 지정하세요. 예를 들어debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.REGION: 인스턴스 템플릿을 만들 리전MACHINE_TYPE: Flex-start VM에 사용할 머신 유형입니다. N1 머신 유형을 지정하는 경우 VM에 연결할 GPU 수와 유형을 정의하는--accelerator플래그를 포함해야 합니다.RUN_DURATION: 요청된 VM을 실행할 기간입니다. 각각d,h,m,s를 사용하여 일, 시, 분 또는 초 순서로 값 형식을 지정해야 합니다. 예를 들어 30분의 경우30m을, 1일 2시간 3분 4초의 경우1d2h3m4s를 지정합니다. 값은 10분~7일 사이여야 합니다.
REST
인스턴스 템플릿을 만들려면 POST 요청을 다음 메서드 중 하나에 보냅니다.
리전 인스턴스 템플릿을 만들려면
regionInstanceTemplates.insert메서드를 사용합니다.전역 인스턴스 템플릿을 만들려면
instanceTemplates.insert메서드를 사용합니다.
요청 본문에 다음 필드를 포함합니다.
NO_RESERVATION으로 설정된reservationAffinity.consumeReservationType필드DELETE로 설정된scheduling.instanceTerminationAction필드scheduling.maxRunDuration필드TERMINATE로 설정된scheduling.onHostMaintenance필드FLEX_START로 설정된scheduling.provisioningModel필드
다음 예시 요청은 리전 인스턴스 템플릿을 만듭니다.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceTemplates
{
"name": "INSTANCE_TEMPLATE_NAME",
"properties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"machineType": "MACHINE_TYPE",
"networkInterfaces": [
{
"network": "global/networks/default"
}
],
"reservationAffinity": {
"consumeReservationType": "NO_RESERVATION"
},
"scheduling": {
"instanceTerminationAction": "DELETE",
"maxRunDuration": {
"seconds": RUN_DURATION
},
"onHostMaintenance": "TERMINATE",
"provisioningModel": "FLEX_START"
}
}
}
다음을 바꿉니다.
PROJECT_ID: 인스턴스 템플릿을 만들 프로젝트의 IDREGION: 인스턴스 템플릿을 만들 리전입니다.INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예:debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.IMAGE: 다음 중 하나를 지정합니다.OS 이미지의 특정 버전입니다(예:
debian-12-bookworm-v20240617).이미지 계열이며 형식은
family/IMAGE_FAMILY여야 합니다. 지원 중단되지 않은 최신 OS 이미지를 사용하려면 이미지 계열을 지정하세요. 예를 들어family/debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.
MACHINE_TYPE: VM에 사용할 머신 유형입니다. N1 머신 유형을 지정하는 경우 VM에 연결할 GPU 수와 유형을 정의하는guestAccelerators필드를 포함해야 합니다.RUN_DURATION: 요청된 VM을 실행할 기간(초)입니다. 값은600(600초(10분))~604800(604,800초(7일)) 사이여야 합니다.
인스턴스 템플릿 만들기에 대한 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.
일괄 모드를 사용하는 MIG 만들기
MIG에서 인스턴스를 일괄 생성하려면 MIG 구성에서 targetSizePolicy.mode 필드를 BULK로 설정합니다. 이 일괄 모드를 사용하면 MIG는 리소스를 모두 사용할 수 있을 때까지 기다린 후 인스턴스를 한 번에 만듭니다.
콘솔
인스턴스 그룹 페이지로 이동합니다.
인스턴스 그룹 만들기를 클릭합니다. 인스턴스 그룹 만들기 페이지가 열립니다.
이름 필드에 MIG 이름을 입력합니다.
인스턴스 템플릿을 선택하기 전에 다음을 수행해야 합니다.
- flex-start 프로비저닝 모델을 사용하는 경우 다음과 같이 복구를 사용 중지해야 합니다.
- VM 인스턴스 수명 주기 섹션에서 대체 영역의 VM 복구 허용 체크박스를 선택 해제합니다.
- 실패 시 기본 작업 목록에서 작업 없음을 선택합니다.
- 위치 섹션에서 다음을 수행합니다.
- 영역 MIG를 만들려면 단일 영역을 선택합니다.
- 리전 MIG를 만들려면 여러 영역을 선택합니다. 목표 분산 형태에서 모든 단일 영역을 선택합니다. 표시되는 대화상자에서 인스턴스 재분산 사용 중지를 선택합니다.
- flex-start 프로비저닝 모델을 사용하는 경우 다음과 같이 복구를 사용 중지해야 합니다.
인스턴스 템플릿 필드로 돌아갑니다. 인스턴스 템플릿 목록에서 이전 섹션에서 만든 인스턴스 템플릿을 선택합니다.
인스턴스 수 필드에 한 번에 만들려는 인스턴스 수를 지정합니다.
일괄 대상 크기 정책으로 한 번에 모든 VM 확보 체크박스를 선택합니다.
만들기를 클릭합니다.
gcloud
일괄 생성이 사용 설정된 MIG를 만들려면 bulk로 설정된 --target-size-policy-mode 플래그와 함께 gcloud compute instance-groups managed create 명령어를 사용합니다.
flex-start 프로비저닝 모델을 사용하는 경우 다음 명령어에 --default-action-on-vm-failure=do-nothing 플래그를 포함하여 MIG에서 복구를 사용 중지해야 합니다.
- 영역 MIG를 만들려면 다음 명령어를 실행합니다.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zone=ZONE \
- 리전 MIG를 만들려면 다음 명령어를 실행합니다.
gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \
--size=SIZE \
--target-size-policy-mode=bulk \
--template=INSTANCE_TEMPLATE_URL \
--zones=LIST_OF_ZONES \
다음을 바꿉니다.
INSTANCE_GROUP_NAME: MIG 이름SIZE: MIG의 인스턴스 수입니다.INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.- 리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
- 리전 인스턴스 템플릿의 경우:
ZONE: MIG가 인스턴스를 만드는 영역입니다.LIST_OF_ZONES: 리전 MIG가 인스턴스를 생성하는 영역의 쉼표로 구분된 목록입니다. 예를 들면us-central1-a, us-central1-b, us-central1-c입니다.
REST
일괄 생성이 사용 설정된 MIG를 만들려면 다음과 같이 POST 요청을 수행합니다. 요청 본문에서 targetSizePolicy.mode 필드를 bulk로 설정합니다.
flex-start 프로비저닝 모델을 사용하는 경우 다음 요청에 "instanceLifecyclePolicy": {"defaultActionOnFailure": "DO_NOTHING"} 필드를 포함하여 MIG에서 복구를 사용 중지해야 합니다.
영역 MIG를 만들려면
instanceGroupManagers.insert메서드에POST요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }리전 MIG를 만들려면
regionInstanceGroupManagers.insert메서드에POST요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "targetSize": SIZE, "targetSizePolicy": { "mode": "bulk" }, "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ] }
다음을 바꿉니다.
PROJECT_ID:프로젝트 ID입니다.ZONE:MIG가 인스턴스를 만드는 영역입니다.REGION:MIG가 인스턴스를 만드는 리전입니다.INSTANCE_GROUP_NAME:MIG 이름입니다.SIZE:MIG의 인스턴스 수입니다.INSTANCE_TEMPLATE_URL: MIG에서 인스턴스를 만드는 데 사용할 인스턴스 템플릿의 URL. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.- 리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID - 전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
- 리전 인스턴스 템플릿의 경우:
인스턴스 추가 또는 삭제
일괄 모드를 사용하는 MIG에서는 MIG의 대상 크기를 수동으로 늘리거나 줄여 인스턴스를 추가하거나 삭제할 수 있습니다.
인스턴스 추가: 대상 크기를 0에서 늘리면 MIG는 MIG를 만들 때와 동일한 방식으로 인스턴스를 추가합니다. MIG에 인스턴스가 없는 경우
createInstances메서드를 사용하여 특정 이름으로 인스턴스를 만들 수도 있습니다. 특정 이름으로 인스턴스를 만들려면 MIG에 특정 이름으로 인스턴스 만들기를 참고하세요.인스턴스 삭제: 타겟 크기를 0으로 줄이면 MIG에서 그룹의 기존 인스턴스를 모두 삭제하고 진행 중인 생성 작업을 취소합니다. 타겟 크기를
0으로 줄여 인스턴스를 삭제할 수 있습니다. 0이 아닌 크기로 줄이려면 진행 중인 일괄 인스턴스 작업이 MIG에 없어야 합니다 (bulkInstanceOperation.inProgress이false이어야 함).
대상 크기를 변경하여 MIG에서 인스턴스를 추가하거나 삭제하려면 MIG 크기 수동 설정을 참고하세요.
다음 단계
- MIG에서 인스턴스 일괄 생성 보기 또는 취소 방법 알아보기
- 관리형 인스턴스 작업 방법을 알아봅니다.
- MIG 및 관리형 인스턴스에 대한 정보 보기