이 문서에서는 스팟 VM을 사용하는 관리형 인스턴스 그룹 (MIG)을 만드는 방법을 설명합니다.
스팟 VM은 할인율이 높은 가격으로 획득할 수 있는 가상 머신(VM) 인스턴스입니다. 하지만 Compute Engine은 언제든지 스팟 VM을 중지하거나 삭제하여 용량을 확보할 수 있습니다. 스팟 VM을 사용하여 일괄 처리 작업이나 스테이트리스 애플리케이션과 같은 내결함성 워크로드를 저렴한 비용으로 실행하세요.
MIG를 만드는 데 사용할 수 있는 다른 방법은 MIG를 만드는 기본 시나리오를 참고하세요.
시작하기 전에
- 스팟 VM, 특히 제한사항에 대해 읽어보세요.
- 요청하려는 리소스에 할당량이 충분한지 확인합니다. 자세한 내용은 할당량을 참고하세요.
-
워크로드용 스팟 VM을 만들기 전에 다음 단계를 완료하세요.
선점을 관리하도록 워크로드 구성 특히 워크로드의 일부로 실행되거나 종료 중에 실행되도록 VM 메타데이터에 추가할 수 있는 파일인 선점을 처리하는 스크립트를 준비하는 것이 좋습니다. 자세한 내용은 스팟 VM 선점 관리를 참고하세요.
머신 유형과 위치를 선택하는 데 도움이 되도록 스팟 VM의 데이터를 확인하는 것이 좋습니다. 리소스 가용성이 높은 머신 유형과 위치를 선택하면 리소스 가용성 오류를 방지하고 선점되기 전에 가동 시간을 늘릴 수 있습니다.
장기 워크로드를 계획할 때 특히 유용한 과거 선점 및 가격 책정 데이터는 스팟 VM의 선점률 및 가격 책정 데이터 보기를 참고하세요.
특히 단기 워크로드용 스팟 VM을 만들기 직전에 유용한 현재 가용성 데이터는 스팟 VM 가용성 보기를 참고하세요.
-
아직 인증을 설정하지 않았다면 설정합니다.
인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.
이 페이지의 샘플 사용 방법에 대한 탭을 선택하세요.
콘솔
Google Cloud 콘솔을 사용하여 Google Cloud 서비스 및 API에 액세스하는 경우 인증을 설정할 필요가 없습니다.
gcloud
-
Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.
gcloud init외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
-
- 기본 리전 및 영역을 설정합니다.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공한 사용자 인증 정보를 사용합니다.
Google Cloud CLI를 설치합니다.
외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.
자세한 내용은 Google Cloud 인증 문서의 REST 사용을 위한 인증을 참조하세요.
필요한 역할
스팟 VM을 사용하는 MIG를 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자 (v1) (roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요.
역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.
이 사전 정의된 역할에는 스팟 VM을 사용하는 MIG를 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
Spot VM을 사용하는 MIG를 만들려면 다음 권한이 필요합니다.
-
인스턴스 템플릿을 만들려면 프로젝트에 대해
compute.instanceTemplates.create권한이 필요합니다. -
MIG를 만들려면 프로젝트에 대해
compute.instanceGroupManagers.create권한이 필요합니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
스팟 VM을 사용하는 MIG 만들기
스팟 VM을 사용하는 MIG를 만들려면 다음 단계를 완료해야 합니다.
스팟 VM을 만들도록 구성된 인스턴스 템플릿 만들기
스팟 VM을 만들도록 구성된 인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.
인스턴스 템플릿 만들기를 클릭합니다. 인스턴스 템플릿 만들기 페이지가 표시됩니다.
이름 필드에 인스턴스 템플릿의 이름을 입력합니다.
위치 섹션에서 만들려는 인스턴스 템플릿의 유형을 선택합니다.
리전 인스턴스 템플릿의 경우 리전을 선택한 후 템플릿을 만들 리전을 선택합니다. Spot VM에서 사용할 머신 유형에 따라 지원되는 리전을 지정합니다.
전역 인스턴스 템플릿의 경우 전역을 선택합니다.
머신 구성 섹션에서 스팟 VM에 지원되는 머신 시리즈를 선택합니다.
프로비저닝 모델 섹션에서 다음을 수행합니다.
VM 프로비저닝 모델 목록에서 Spot을 선택합니다. VM 프로비저닝 모델 고급 설정 섹션이 펼쳐집니다.
선점 알림 기간 목록에서 선점을 처리하는 방법에 따라 옵션을 선택합니다.
120초 (권장)를 선택하는 경우 스팟 VM을 만들기 전에 워크로드 내에서 선점을 처리해야 합니다. 예를 들어 워크로드에 선점이 감지될 때까지 실행을 기다리는 진행 상황을 저장하는 스크립트가 포함되어 있는지 확인합니다.
0초 (기본값)를 선택하는 경우 종료 스크립트를 사용하여 선점을 처리해야 합니다. 스팟 VM을 만들기 전에 선점으로 인해 종료될 때 진행 상황을 저장하는 종료 스크립트가 포함된 파일을 만듭니다. 이 종료 스크립트를 나중에 설명된 단계에 따라 첨부합니다.
선점 시 스팟 VM을 중지할지 삭제할지 지정하려면 VM 종료 시 목록에서 다음 옵션 중 하나를 선택합니다.
스팟 VM을 중지하려면 중지를 선택합니다.
스팟 VM을 삭제하려면 삭제를 선택합니다.
종료 스크립트를 추가하려면 다음 단계를 완료하세요. 선점 알림 기간에 0초 (기본값)를 선택한 경우 선점을 처리하려면 이 단계가 필요합니다. 120초를 선택한 경우 이 단계는 선택사항입니다.
- 고급 옵션 섹션을 펼칩니다.
- 관리 섹션을 펼칩니다.
- 메타데이터 섹션에서 항목 추가를 클릭합니다.
- 키 필드에서 메타데이터 키에
shutdown-script를 입력합니다. - 값 필드에 선점을 처리하는 종료 스크립트의 콘텐츠를 추가합니다.
(선택사항) 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 다음 안내에 따라 부팅 디스크를 변경합니다.
만들기를 클릭합니다.
gcloud
스팟 VM을 만들도록 구성된 인스턴스 템플릿을 만들려면 gcloud compute instance-templates create 명령어를 사용합니다.
다음 명령어는 리전 인스턴스 템플릿을 만듭니다. 전역 인스턴스 템플릿을 만들려면 --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=TERMINATION_ACTION \
--machine-type=MACHINE_TYPE \
--provisioning-model=SPOT \
--preemption-notice-duration=PREEMPTION_NOTICE_DURATION \
--metadata shutdown-script=SHUTDOWN_SCRIPT
다음을 바꿉니다.
INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예:debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.IMAGE_FAMILY: 이미지 계열입니다. 지원 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어debian-12를 지정하면 Debian 12 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.REGION: 인스턴스 템플릿을 만들 리전 스팟 VM에서 사용할 머신 유형에 따라 지원되는 리전을 지정합니다.TERMINATION_ACTION: 선점 시 Compute Engine이 스팟 VM을 중지하는지 삭제하는지 여부입니다. VM을 중지 (STOP)하거나 삭제 (DELETE)하도록 지정해야 합니다.MACHINE_TYPE: 스팟 VM에 지원되는 머신 유형입니다. N1 머신 유형을 지정하는 경우 VM에 연결할 GPU 수와 유형을 정의하는--accelerator플래그를 포함해야 합니다.PREEMPTION_NOTICE_DURATION: 선점 알림 기간을 사용 설정할지 여부입니다. gcloud CLI의 경우 값은120s또는0s이어야 합니다.120s를 지정하는 경우 (권장) 워크로드 내에서 선점을 처리합니다. (선택적으로 종료 스크립트를 지정할 수도 있습니다.)0s(기본값)를 지정하는 경우 종료 스크립트 내에서 선점을 처리합니다.
SHUTDOWN_SCRIPT: 종료 스크립트PREEMPTION_NOTICE_DURATION을0s(기본값)로 설정한 경우 선점을 처리하려면 종료 스크립트를 지정해야 합니다. 종료 스크립트의 형식을 지정하고 지정하는 방법에 관한 자세한 내용은 종료 스크립트 실행을 참고하세요.종료 스크립트를 지정하지 않으려면
--metadata shutdown-script플래그를 삭제하면 됩니다.
REST
스팟 VM을 만들도록 구성된 인스턴스 템플릿을 만들려면 다음 POST 요청 중 하나를 실행합니다.
리전 인스턴스 템플릿을 만들려면
regionInstanceTemplates.insert메서드를 사용합니다.전역 인스턴스 템플릿을 만들려면
instanceTemplates.insert메서드를 사용합니다.
예를 들어 리전 인스턴스 템플릿을 만들려면 다음과 같이 요청합니다.
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"
}
],
"scheduling": {
"instanceTerminationAction": "TERMINATION_ACTION",
"provisioningModel": "SPOT",
"preemptionNoticeDuration": { "seconds": PREEMPTION_NOTICE_DURATION }
},
"metadata": {
"items": [
{
"key": "shutdown-script",
"value": "SHUTDOWN_SCRIPT"
}
]
}
}
}
다음을 바꿉니다.
PROJECT_ID: 인스턴스 템플릿을 만들 프로젝트의 ID입니다.REGION: 인스턴스 템플릿을 만들 리전 스팟 VM에서 사용할 머신 유형에 따라 지원되는 리전을 지정합니다.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필드를 포함해야 합니다.TERMINATION_ACTION: 선점 시 Compute Engine이 스팟 VM을 중지하는지 삭제하는지 여부입니다. VM을 중지 (STOP)하거나 삭제 (DELETE)하도록 지정해야 합니다.PREEMPTION_NOTICE_DURATION: 선점 알림 기간을 사용 설정할지 여부입니다. REST의 경우 값은120또는0이어야 합니다.120를 지정하는 경우 (권장) 워크로드 내에서 선점을 처리합니다. (선택적으로 종료 스크립트를 지정할 수도 있습니다.)0(기본값)를 지정하는 경우 종료 스크립트 내에서 선점을 처리합니다.
SHUTDOWN_SCRIPT: 종료 스크립트PREEMPTION_NOTICE_DURATION을0s(기본값)로 설정한 경우 선점을 처리하려면 종료 스크립트를 지정해야 합니다. 종료 스크립트의 형식을 지정하고 지정하는 방법에 관한 자세한 내용은 종료 스크립트 실행을 참고하세요.종료 스크립트를 지정하지 않으려면
metadata필드와 하위 필드를 삭제하면 됩니다.
TERMINATION_ACTION: (선택사항) Compute Engine이 VM을 선점할 때 수행할 종료 작업을 지정합니다(STOP(기본 동작) 또는DELETE).
인스턴스 템플릿을 만든 후 템플릿의 세부정보를 확인하여 속성을 검토할 수 있습니다.
리전 또는 영역 MIG 만들기
리전 또는 영역 MIG를 만들려면 다음 옵션 중 하나를 선택합니다.
콘솔
Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.
인스턴스 그룹 만들기를 클릭합니다. 인스턴스 그룹 만들기 페이지가 열립니다.
이름 필드에 MIG 이름을 입력합니다.
인스턴스 템플릿 목록에서 이전 섹션에서 만든 인스턴스 템플릿을 선택합니다.
인스턴스 수 필드에 MIG에서 만들 스팟 VM 수를 입력합니다. 워크로드에 특정 이름의 VM이 필요한 경우
0를 입력하여 이 단계에서 VM 생성을 건너뜁니다. MIG를 만든 후 특정 이름으로 VM을 추가합니다.위치 섹션에서 다음과 같이 영역 또는 리전 MIG를 만들지 여부를 지정합니다.
영역 MIG를 만들려면 단일 영역을 선택합니다. 또는 리전 MIG를 만들려면 여러 영역을 선택합니다.
MIG의 리전 및 영역을 선택합니다.
만들기를 클릭합니다.
gcloud
MIG를 만들려면 gcloud compute instance-groups managed create 명령어를 사용합니다.
만들려는 MIG의 유형에 따라 명령어에 다음 플래그를 포함합니다.
영역 MIG를 만들려면
--zone플래그를 포함합니다.gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_URL \ --zone=ZONE리전 MIG를 만들려면
--region플래그를 포함합니다.gcloud compute instance-groups managed create INSTANCE_GROUP_NAME \ --size=SIZE \ --template=INSTANCE_TEMPLATE_URL \ --region=REGION
다음을 바꿉니다.
INSTANCE_GROUP_NAME: MIG 이름INSTANCE_TEMPLATE_URL: 이전 섹션에서 만든 인스턴스 템플릿의 URL입니다. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
SIZE: MIG에서 만들 스팟 VM 수입니다. 워크로드에 특정 VM 이름이 필요한 경우 이 단계에서 VM 생성을 건너뛰도록0를 지정합니다. MIG를 만든 후 특정 이름으로 VM을 추가합니다.ZONE: 영역 MIG를 만들 영역입니다. 리전 인스턴스 템플릿을 사용하여 MIG를 만드는 경우 템플릿과 동일한 리전 내의 영역을 지정해야 합니다.REGION: 리전 MIG를 만들 리전입니다. 리전 인스턴스 템플릿을 사용하여 MIG를 만드는 경우 템플릿의 리전과 동일한 리전을 지정해야 합니다.
REST
MIG를 만들려면 다음 메서드 중 하나에 POST 요청을 보냅니다.
영역 MIG를 만들려면
instanceGroupManagers.insert메서드에POST요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "versions": [ { "instanceTemplate": "INSTANCE_TEMPLATE_URL" } ], "targetSize": SIZE }리전 MIG를 만들려면
regionInstanceGroupManagers.insert메서드에POST요청을 수행합니다.POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instanceGroupManagers { "name": "INSTANCE_GROUP_NAME", "instanceTemplate": "INSTANCE_TEMPLATE_URL", "targetSize": SIZE }
다음을 바꿉니다.
PROJECT_ID: 리전 또는 영역 MIG를 만들 프로젝트의 ID입니다.ZONE: 영역 MIG를 만들 영역입니다. 리전 인스턴스 템플릿을 사용하여 MIG를 만드는 경우 템플릿과 동일한 리전 내의 영역을 지정해야 합니다.REGION: 리전 MIG를 만들 리전입니다. 리전 인스턴스 템플릿을 사용하여 MIG를 만드는 경우 템플릿의 리전과 동일한 리전을 지정해야 합니다.INSTANCE_GROUP_NAME: MIG 이름INSTANCE_TEMPLATE_URL: 이전 섹션에서 만든 인스턴스 템플릿의 URL입니다. URL에는 인스턴스 템플릿의 ID 또는 이름이 포함될 수 있습니다. 다음 값 중 하나를 지정합니다.리전 인스턴스 템플릿의 경우:
projects/PROJECT_ID/regions/REGION/instanceTemplates/INSTANCE_TEMPLATE_ID전역 인스턴스 템플릿의 경우:
INSTANCE_TEMPLATE_ID
SIZE: MIG에서 만들 스팟 VM 수입니다. 워크로드에 특정 VM 이름이 필요한 경우 이 단계에서 VM 생성을 건너뛰도록0를 지정합니다. MIG를 만든 후 특정 이름으로 VM을 추가합니다.
MIG를 만든 후 MIG의 세부정보를 확인하여 속성을 검토할 수 있습니다.
다음 단계
스팟 VM 권장사항에 대해 자세히 알아보세요.
MIG에서 고가용성을 위해 VM 복구에 대해 자세히 알아보세요.
MIG에서 VM 자동 확장에 대해 자세히 알아보세요.
스테이트풀(Stateful) MIG에 대해 자세히 알아보세요.