일괄 모드를 사용하는 MIG 만들기

이 문서에서는 MIG에서 일괄 모드를 사용하여 필요한 모든 가상 머신 (VM) 인스턴스를 동시에 만드는 방법을 설명합니다. 한 번에 인스턴스를 만들면 필요한 모든 리소스를 사용할 수 있을 때만 MIG에서 인스턴스를 만듭니다.

일괄 모드의 작동 방식을 알아보려면 MIG에서 인스턴스 일괄 생성 정보를 참고하세요.

인스턴스 템플릿 만들기

MIG의 일괄 모드는 예약에 따름 또는 flex-start 프로비저닝 모델을 지정하는 인스턴스 템플릿에서만 지원됩니다. 일괄 모드를 사용하려면 다음 섹션에 설명된 대로 이러한 프로비저닝 모델 중 하나를 사용하여 인스턴스 템플릿을 만드세요. 프로비저닝 모델에 대한 자세한 내용은 Compute Engine 인스턴스 프로비저닝 모델을 참고하세요.

'예약에 따름' 프로비저닝 모델 사용

인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Cloud de Confiance 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다. 인스턴스 템플릿 만들기 페이지가 열립니다.

  3. 이름 필드에 인스턴스 템플릿의 이름을 입력합니다.

  4. 위치 섹션에서 다음 옵션 중 하나를 선택합니다.

    • 리전 인스턴스 템플릿을 만들려면 리전(권장)을 선택한 후 템플릿을 만들 리전을 선택합니다.

    • 전역 인스턴스 템플릿을 만들려면 전역을 선택합니다.

  5. 머신 구성 섹션에서 머신 유형을 지정합니다.

  6. 프로비저닝 모델 섹션에서 다음 단계를 완료합니다.

    1. VM 프로비저닝 모델 고급 설정을 펼칩니다.

    2. VM 종료 시 목록에서 삭제를 선택합니다.

  7. (선택사항) 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 다음 안내에 따라 부팅 디스크를 변경합니다.

  8. 고급 옵션 섹션을 펼친 후 다음을 수행합니다.

    1. 관리 섹션을 펼칩니다.

    2. 예약 섹션에서 예약 선택을 선택한 다음 예약 선택을 클릭합니다. 표시되는 창에서 메시지에 따라 사용할 예약 리소스를 선택합니다.

  9. 만들기를 클릭합니다.

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 요청을 다음 메서드 중 하나에 보냅니다.

요청 본문에 다음 필드를 포함합니다.

  • 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: 인스턴스 템플릿을 만들 프로젝트의 ID

  • REGION: 인스턴스 템플릿을 만들 리전입니다.

  • 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(유연한 시작) 프로비저닝 모델 사용

인스턴스 템플릿을 만들려면 다음 옵션 중 하나를 선택합니다.

콘솔

  1. Cloud de Confiance 콘솔에서 인스턴스 템플릿 페이지로 이동합니다.

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다. 인스턴스 템플릿 만들기 페이지가 열립니다.

  3. 이름 필드에 인스턴스 템플릿의 이름을 입력합니다.

  4. 위치 섹션에서 다음 옵션 중 하나를 선택합니다.

    • 리전 인스턴스 템플릿을 만들려면 리전(권장)을 선택한 후 템플릿을 만들 리전을 선택합니다.

    • 전역 인스턴스 템플릿을 만들려면 전역을 선택합니다.

  5. 머신 구성 섹션에서 머신 유형을 지정합니다.

  6. 프로비저닝 모델 섹션에서 다음 단계를 완료합니다.

    1. VM 프로비저닝 모델 필드에서 유연한 시작을 선택합니다.

    2. VM 프로비저닝 모델 고급 설정을 펼칩니다.

    3. VM 시간 제한 설정 체크박스를 선택합니다.

    4. 인스턴스 템플릿을 사용하여 생성된 VM의 실행 기간을 설정하려면 시간 입력 필드에 시간을 입력합니다. 값은 36초(0.01)에서 7일(168) 사이여야 합니다.

  7. (선택사항) 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 다음 안내에 따라 부팅 디스크를 변경합니다.

  8. 만들기를 클릭합니다.

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 요청을 다음 메서드 중 하나에 보냅니다.

요청 본문에 다음 필드를 포함합니다.

  • 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: 인스턴스 템플릿을 만들 프로젝트의 ID

  • REGION: 인스턴스 템플릿을 만들 리전입니다.

  • 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는 리소스를 모두 사용할 수 있을 때까지 기다린 후 인스턴스를 한 번에 만듭니다.

콘솔

  1. 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다. 인스턴스 그룹 만들기 페이지가 열립니다.

  3. 이름 필드에 MIG 이름을 입력합니다.

  4. 인스턴스 템플릿을 선택하기 전에 다음을 수행해야 합니다.

    1. flex-start 프로비저닝 모델을 사용하는 경우 다음과 같이 복구를 사용 중지해야 합니다.
      1. VM 인스턴스 수명 주기 섹션에서 대체 영역의 VM 복구 허용 체크박스를 선택 해제합니다.
      2. 실패 시 기본 작업 목록에서 작업 없음을 선택합니다.
    2. 위치 섹션에서 다음을 수행합니다.
      • 영역 MIG를 만들려면 단일 영역을 선택합니다.
      • 리전 MIG를 만들려면 여러 영역을 선택합니다. 목표 분산 형태에서 모든 단일 영역을 선택합니다. 표시되는 대화상자에서 인스턴스 재분산 사용 중지를 선택합니다.
  5. 인스턴스 템플릿 필드로 돌아갑니다. 인스턴스 템플릿 목록에서 이전 섹션에서 만든 인스턴스 템플릿을 선택합니다.

  6. 인스턴스 수 필드에 한 번에 만들려는 인스턴스 수를 지정합니다.

  7. 일괄 대상 크기 정책으로 한 번에 모든 VM 확보 체크박스를 선택합니다.

  8. 만들기를 클릭합니다.

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.inProgressfalse이어야 함).

대상 크기를 변경하여 MIG에서 인스턴스를 추가하거나 삭제하려면 MIG 크기 수동 설정을 참고하세요.

다음 단계