MIG에서 크기 조절 요청 만들기


이 문서에서는 연결된 GPU가 있는 가상 머신(VM) 인스턴스의 관리형 인스턴스 그룹(MIG)에서 크기 조절 요청을 만드는 방법을 설명합니다.

시작하기 전에

  • 크기 조절 요청 작동 방법을 검토합니다.
  • 요청 중인 리소스에 대해 GPU 할당량이 충분한지 확인하려면 GPU 할당량 확인을 참조하세요.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인하는 프로세스입니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음과 같이 Compute Engine에 인증하면 됩니다.

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    1. Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init
    2. Set a default region and zone.
    3. REST

      로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.

        Install the Google Cloud CLI, then initialize it by running the following command:

        gcloud init

      자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.

필요한 역할

MIG에서 크기 조절 요청을 만드는 데 필요한 권한을 얻으려면 관리자에게 프로젝트에 대해 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 MIG에서 크기 조절 요청을 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

MIG에서 크기 조절 요청을 만들려면 다음 권한이 필요합니다.

  • 인스턴스 템플릿을 만들려면 프로젝트에 대해 compute.instanceTemplates.create 권한이 필요합니다.
  • 영역 MIG를 만들려면 프로젝트에 대해 compute.instanceGroupManagers.create 권한이 필요합니다.
  • MIG에서 크기 조절 요청을 만들려면 프로젝트에 대해 compute.instanceGroupManagers.update 권한이 필요합니다.

커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.

크기 조절 요청을 위한 MIG 준비

MIG에서 크기 조절 요청을 만들려면 다음 섹션에 설명된 대로 인스턴스 템플릿과 MIG를 구성해야 합니다.

인스턴스 템플릿 만들기

MIG에서 크기 조절 요청을 만들려면 MIG에서 다음 구성과 함께 인스턴스 템플릿을 사용해야 합니다.

콘솔

MIG에서 크기 조절 요청을 만들도록 구성된 인스턴스 템플릿을 만들려면 다음을 수행합니다.

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

    인스턴스 템플릿으로 이동

  2. 인스턴스 템플릿 만들기를 클릭합니다.

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

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

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

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

  5. 머신 구성 섹션에서 다음을 수행합니다.

    1. GPU 탭을 클릭합니다.

    2. GPU 유형 목록에서 GPU 유형을 선택합니다.

    3. GPU 수 목록에서 GPU 수를 선택합니다.

    4. 선택사항: GPU 모델에서 그래프 워크로드에 대한 NVIDIA RTX 가상 워크스테이션(vWS)을 지원하고 그래픽 집중 워크로드를 실행하려는 경우 가상 워크스테이션 사용(NVIDIA GRID)을 선택합니다.

    5. 머신 유형 섹션에서 머신 유형을 선택합니다.

  6. 기본 부팅 디스크 유형 또는 이미지를 변경하려면 부팅 디스크 섹션에서 변경을 클릭합니다. 그런 후 안내에 따라 부팅 디스크를 변경합니다.

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

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

    2. 예약 목록에서 사용 안함을 선택합니다.

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

gcloud

MIG에서 크기 조절 요청을 만들도록 구성된 인스턴스 템플릿을 만들려면 다음 플래그와 함께 instance-templates create 명령어를 사용합니다.

  • TERMINATE로 설정된 --maintenance-policy 플래그

  • none로 설정된 --reservation-affinity 플래그

예를 들어 다음 명령어를 사용합니다.

gcloud compute instance-templates create INSTANCE_TEMPLATE_NAME \
    --image-project=IMAGE_PROJECT \
    --image-family=IMAGE \
    --machine-type=MACHINE_TYPE \
    --maintenance-policy=TERMINATE \
    --reservation-affinity=none

다음을 바꿉니다.

  • INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.

    • IMAGE: OS 이미지의 특정 버전입니다(예: debian-10-buster-v20200309).

    • IMAGE_FAMILY: 이미지 계열입니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 debian-10을 지정하면 Debian 10 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • MACHINE_TYPE: GPU를 지원하는 머신 유형입니다. N1 머신 유형을 지정하는 경우 VM에 연결할 GPU 유형 및 개수를 지정하기 위해 --accelerator 플래그를 포함합니다.

REST

MIG에서 크기 조절 요청을 만들도록 구성된 인스턴스 템플릿을 만들려면 instanceTemplates.insert 메서드에 대해 POST 요청을 수행합니다. 요청 본문에서 다음을 수행합니다.

  • scheduling.onHostMaintenance 필드를 TERMINATE로 설정합니다.

  • reservationAffinity.consumeReservationType 필드를 NO_RESERVATION으로 설정합니다.

예를 들어 다음과 같이 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/instanceTemplates

{
  "name": "INSTANCE_TEMPLATE_NAME",
  "properties": {
    "disks": [
      {
        "boot": true,
        "mode": "READ_WRITE",
        "type": "PERSISTENT",
        "initializeParams": {
          "sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
        }
      }
    ],
    "machineType": "MACHINE_TYPE",
    "networkInterfaces": [
      {
        "accessConfigs": [
          {
            "name": "external-IP",
            "type": "ONE_TO_ONE_NAT"
          }
        ],
        "network": "global/networks/default"
      }
    ],
    "reservationAffinity": {
      "consumeReservationType": "NO_RESERVATION"
    },
    "scheduling": {
      "onHostMaintenance": "TERMINATE"
    }
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 인스턴스 템플릿을 만들려는 프로젝트의 ID입니다.

  • INSTANCE_TEMPLATE_NAME: 만들려는 인스턴스 템플릿의 이름입니다.

  • IMAGE_PROJECT: 이미지가 포함된 이미지 프로젝트입니다(예: debian-cloud). 지원되는 이미지 프로젝트에 대한 자세한 내용은 공개 이미지를 참조하세요.

  • IMAGE 또는 IMAGE_FAMILY: 다음 중 하나를 지정합니다.

    • IMAGE: OS 이미지의 특정 버전입니다(예: debian-10-buster-v20200309).

    • IMAGE_FAMILY: 이미지 계열입니다. 중단되지 않은 최신 OS 이미지를 지정합니다. 예를 들어 debian-10을 지정하면 Debian 10 이미지 계열의 최신 버전이 사용됩니다. 이미지 계열 사용에 대한 자세한 내용은 이미지 계열 권장사항을 참조하세요.

  • MACHINE_TYPE: GPU를 지원하는 머신 유형입니다. N1 머신 유형을 지정하는 경우 VM에 연결할 GPU 유형 및 개수를 지정하기 위해 요청 본문에 guestAccelerators 필드를 포함합니다.

인스턴스 템플릿 만들기에 대한 자세한 내용은 인스턴스 템플릿 만들기를 참조하세요.

MIG 만들기 또는 업데이트

이전 섹션의 설명대로 인스턴스 템플릿을 만든 후 해당 인스턴스 템플릿을 사용하여 다음과 같이 MIG를 만들거나 MIG를 업데이트합니다. MIG가 크기 조절 요청을 통해 모든 VM을 만들 수 있도록 MIG 크기를 0으로 설정합니다. 또한 크기 조절 요청에 맞게 MIG를 준비하기 위해 다음을 수행해야 합니다.

콘솔

크기 조절 요청을 만들도록 구성된 영역 MIG를 만들려면 다음을 수행합니다.

  1. Google Cloud 콘솔에서 인스턴스 그룹 페이지로 이동합니다.

    인스턴스 그룹으로 이동

  2. 인스턴스 그룹 만들기를 클릭합니다.

    인스턴스 그룹 만들기 페이지가 열립니다.

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

  4. 인스턴스 템플릿 목록에서 이전 섹션에서 만든 인스턴스 템플릿을 선택합니다. 리전 인스턴스 템플릿을 선택할 경우 리전 목록이 인스턴스 템플릿의 리전으로 설정됩니다.

  5. 인스턴스 수 필드는 기본적으로 사용 중지됩니다. 다음 단계에서 자동 확장을 삭제한 후 0을 입력합니다.

  6. 위치 섹션에서 다음을 수행합니다.

    1. 단일 영역(기본값)을 선택합니다.

    2. MIG의 리전영역을 선택합니다.

  7. 자동 확장 모드 목록에서 자동 확장 구성 삭제를 클릭한 후 삭제를 클릭합니다.

  8. 실패 시 기본 작업 목록에서 작업 없음을 선택합니다.

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

gcloud

크기 조절 요청을 만들도록 구성된 영역 MIG를 만들려면 do_nothing으로 설정된 --default-action-on-vm-failure 플래그와 함께 beta instance-groups managed create 명령어를 사용합니다.

gcloud beta compute instance-groups managed create INSTANCE_GROUP_NAME \
    --template=INSTANCE_TEMPLATE_NAME \
    --size=0 \
    --zone=ZONE \
    --default-action-on-vm-failure=do_nothing

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.

  • INSTANCE_TEMPLATE_NAME: 이전 섹션에서 만든 인스턴스 템플릿의 이름입니다.

  • ZONE: MIG를 만들려는 영역입니다.

REST

크기 조절 요청을 만들도록 구성된 영역 MIG를 만들려면 beta.instanceGroupManagers.insert 메서드POST 요청을 수행합니다. 요청 본문에 DO_NOTHING으로 설정된 defaultActionOnFailure 필드를 포함합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers

{
  "versions": [
    {
      "instanceTemplate": "global/instanceTemplates/INSTANCE_TEMPLATE_NAME"
    }
  ],
  "name": "INSTANCE_GROUP_NAME",
  "targetSize": 0,
  "instanceLifecyclePolicy": {
    "defaultActionOnFailure": "DO_NOTHING"
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 이전 섹션에서 만든 인스턴스 템플릿이 있는 프로젝트의 ID입니다.

  • ZONE: MIG를 만들려는 영역입니다.

  • INSTANCE_TEMPLATE_NAME: 이전 섹션에서 만든 인스턴스 템플릿의 이름입니다.

  • INSTANCE_GROUP_NAME: 만들려는 MIG의 이름입니다.

MIG에서 크기 조절 요청 만들기

크기 조절 요청을 만들기 전에 이전 섹션에 설명된 대로 MIG가 준비되었는지 확인합니다.

크기 조절 요청을 만들고 요청된 모든 리소스를 사용할 수 있으면 MIG에서 요청된 개수의 VM을 한 번에 만듭니다. VM은 지정된 실행 기간이 종료되어 MIG에서 삭제되거나 사용자가 VM을 삭제할 때까지 실행됩니다.

gcloud

MIG에서 크기 조절 요청을 만들려면 beta instance-groups managed resize-requests create 명령어를 사용합니다.

gcloud beta compute instance-groups managed resize-requests create INSTANCE_GROUP_NAME \
    --resize-request=RESIZE_REQUEST_NAME \
    --resize-by=COUNT \
    --requested-run-duration=RUN_DURATION \
    --zone=ZONE

다음을 바꿉니다.

  • INSTANCE_GROUP_NAME: 크기 조절 요청을 만들도록 구성된 기존 영역 MIG의 이름입니다.

  • RESIZE_REQUEST_NAME:지정된 MIG 내에서 고유해야 하는 크기 조절 요청의 이름입니다. 그렇지 않으면 크기 조절 요청 만들기가 실패합니다.

  • COUNT: MIG에 모두 한 번에 모두 추가할 VM 수입니다.

  • RUN_DURATION: MIG에서 자동으로 삭제되기 전까지 요청된 VM을 실행할 기간입니다. 값 형식은 각각 d, h, m, s를 사용해서 일, 시간, 분, 초로 지정해야 합니다. 예를 들어 30분이면 30m을 지정하고 1일 2시간 3분 4초면 1d2h3m4s를 지정합니다. 값은 10분~7일 사이여야 합니다.

  • ZONE: MIG가 있는 영역입니다.

REST

MIG에서 크기 조절 요청을 만들려면 beta.instanceGroupManagerResizeRequests.insert 메서드에 대해 POST 요청을 수행합니다.

POST https://compute.googleapis.com/compute/beta/projects/PROJECT_ID/zones/ZONE/instanceGroupManagers/INSTANCE_GROUP_NAME/resizeRequests

{
  "name": "RESIZE_REQUEST_NAME",
  "resizeBy": COUNT,
  "requestedRunDuration": {
    "seconds": "RUN_DURATION"
  }
}

다음을 바꿉니다.

  • PROJECT_ID: 지정된 MIG가 있는 프로젝트의 ID입니다.

  • ZONE: MIG가 있는 영역입니다.

  • INSTANCE_GROUP_NAME: 크기 조절 요청을 만들도록 구성된 기존 영역 MIG의 이름입니다.

  • RESIZE_REQUEST_NAME:지정된 MIG 내에서 고유해야 하는 크기 조절 요청의 이름입니다. 그렇지 않으면 크기 조절 요청 만들기가 실패합니다.

  • COUNT: MIG에 한 번에 모두 추가할 VM 수입니다.

  • RUN_DURATION: MIG에서 자동으로 삭제되기 전까지 요청된 VM을 실행하려는 기간(초)입니다. 값은 600초(10분)를 나타내는 600에서 604,800초(7일)를 나타내는 604800 사이여야 합니다.

다음 단계