인스턴스 유연성을 사용하여 VM 일괄 생성

이 문서에서는 가상 머신 (VM)을 일괄적으로 만들 때 인스턴스 유연성을 지정하는 방법을 설명합니다. 이 사양을 지정할 때는 VM에 적합한 머신 유형 목록을 지정하며, Compute Engine은 리전의 용량 및 할당량 가용성을 기반으로 지정된 머신 유형 중 하나를 사용하여 VM을 프로비저닝합니다.

일괄 생성된 VM의 인스턴스 유연성에 대한 자세한 내용은 일괄 생성된 VM의 인스턴스 유연성 정보를 참고하세요.

시작하기 전에

  • 만들려는 VM과 관련 리소스의 경우 할당량이 충분하고 필요한 권한이 있는지 확인합니다.
  • 아직 인증을 설정하지 않았다면 설정합니다. 인증은 Google Cloud 서비스 및 API에 액세스하기 위해 ID를 확인합니다. 로컬 개발 환경에서 코드 또는 샘플을 실행하려면 다음 옵션 중 하나를 선택하여 Compute Engine에 인증하면 됩니다.

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

    gcloud

    1. Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

    2. Set a default region and zone.

    REST

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

      Google Cloud CLI를 설치합니다. 설치 후 다음 명령어를 실행하여 Google Cloud CLI를 초기화합니다.

      gcloud init

      외부 ID 공급업체(IdP)를 사용하는 경우 먼저 제휴 ID로 gcloud CLI에 로그인해야 합니다.

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

필요한 역할

VM 일괄 생성에 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자(v1)(roles/compute.instanceAdmin.v1) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 프로젝트, 폴더, 조직에 대한 액세스 관리를 참조하세요.

이 사전 정의된 역할에는 VM을 일괄로 만드는 데 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.

필수 권한

VM을 일괄로 만들려면 다음 권한이 필요합니다.

  • 프로젝트에 대한 compute.instances.create 권한
  • 커스텀 이미지를 사용하여 VM 만들기: 이미지에 대한 compute.images.useReadOnly 권한
  • 스냅샷을 사용하여 VM 만들기: 스냅샷에 대한 compute.snapshots.useReadOnly 권한
  • 인스턴스 템플릿을 사용하여 VM 만들기: 인스턴스 템플릿에 대한 compute.instanceTemplates.useReadOnly 권한
  • VM의 서브넷 지정: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.use 권한
  • VM의 고정 IP 주소 지정: 프로젝트에 대한 compute.addresses.use 권한
  • VPC 네트워크를 사용할 때 VM에 외부 IP 주소 할당: 프로젝트 또는 선택한 서브넷에 대한 compute.subnetworks.useExternalIp 권한
  • VM에 레거시 네트워크 할당: 프로젝트에 대한 compute.networks.use 권한
  • 레거시 네트워크 사용 시 VM에 외부 IP 주소 할당: 프로젝트에 대한 compute.networks.useExternalIp 권한
  • VM에 VM 인스턴스 메타데이터 설정: 프로젝트에 대한 compute.instances.setMetadata 권한
  • VM에 태그 설정: VM에 대한 compute.instances.setTags 권한
  • VM에 라벨 설정: VM에 대한 compute.instances.setLabels 권한
  • VM에 사용할 서비스 계정 설정: VM에 대한 compute.instances.setServiceAccount 권한
  • VM의 새 디스크 만들기: 프로젝트에 대한 compute.disks.create 권한
  • 기존 디스크를 읽기 전용 또는 읽기-쓰기 모드로 연결: 디스크에 대한 compute.disks.use 권한
  • 기존 디스크를 읽기 전용 모드로 연결: 디스크에 대한 compute.disks.useReadOnly 권한

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

선호도가 동일한 여러 머신 유형으로 VM 만들기

워크로드가 여러 머신 유형에서 작동할 수 있는 경우 단일 인스턴스 선택에서 호환되는 모든 머신 유형의 목록을 지정할 수 있습니다. 다음 예시에서는 선호도가 동일한 여러 머신 유형을 지정하는 방법을 보여줍니다.

gcloud

단일 인스턴스 선택으로 VM을 일괄로 만들려면 --instance-selection-machine-types 플래그와 함께 gcloud compute instances bulk create 명령어를 사용합니다.

gcloud compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8

REST

Compute Engine API에서 regionInstances.bulkInsert 메서드POST 요청을 실행합니다. 요청 본문에 머신 유형을 나열하는 instanceSelections 항목이 하나 있는 instanceFlexibilityPolicy를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ]
      }
    }
  }
}

다음을 바꿉니다.

  • COUNT: 만들 VM 수입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: VM을 만들 리전입니다.

선호도에 따라 순위가 지정된 여러 머신 유형으로 VM 만들기

Compute Engine에서 특정 순서로 머신 유형을 선택하도록 하려면 여러 인스턴스 선택을 구성하면 됩니다. 각 인스턴스 선택에는 머신 유형 목록과 순위가 포함됩니다. 순위는 머신 유형의 선호도를 정의하는 정수입니다. 순위가 낮을수록 선호도가 높습니다. Compute Engine은 선호도가 높은 (순위가 낮은) 머신 유형을 사용하여 VM을 만들려고 시도합니다. 이러한 머신 유형을 사용할 수 없는 경우 Compute Engine은 우선순위가 낮은 머신 유형 (순위가 높음)을 사용합니다.

다음 예에서는 순위를 사용하여 여러 인스턴스 선택을 지정하는 방법을 보여줍니다.

gcloud

인스턴스를 여러 개 선택하여 VM을 일괄로 만들려면 gcloud compute instances bulk create 명령어를 사용하고 --instance-selection 플래그를 여러 번 지정합니다.

gcloud beta compute instances bulk create \
    --name-pattern=test-bulk-# \
    --region=REGION \
    --count=COUNT \
    --instance-selection "name=most-preferred,rank=0,machine-type=c3-standard-16,machine-type=n2-standard-16, machine-type=c2-standard-16" \
    --instance-selection "name=least-preferred,rank=1,machine-type=c3-standard-8,machine-type=n2-standard-8, machine-type=c2-standard-8"

REST

Compute Engine API에서 regionInstances.bulkInsert 메서드POST 요청을 실행합니다. 요청 본문에 instanceFlexibilityPolicy를 포함하고 instanceSelections에 여러 항목을 지정합니다. 각 항목에는 머신 유형 목록과 rank가 있습니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "most-preferred": {
        "machineTypes": [
          "c3-standard-16",
          "c2-standard-16"
        ],
        "rank": 1
      },
      "least-preferred": {
        "machineTypes": [
          "n2-standard-16",
          "c3-standard-8",
          "n2-standard-8",
          "c2-standard-8"
        ],
        "rank": 2
      }
    }
  }
}

다음을 바꿉니다.

  • COUNT: 만들 VM 수입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: VM을 만들 리전입니다.

인스턴스 선택에서 디스크 재정의 지정

기본적으로 일괄 요청으로 생성된 VM은 instanceProperties의 디스크 구성을 사용합니다. 하지만 인스턴스 선택 내에서 디스크 구성을 지정할 수 있습니다. 인스턴스 선택에서 디스크를 지정하면 해당 인스턴스 선택을 사용하는 VM의 instanceProperties에 있는 디스크 구성이 재정의됩니다.

다음 예에서는 인스턴스 선택에서 디스크를 지정하는 방법을 보여줍니다.

REST

Compute Engine API에서 regionInstances.bulkInsert 메서드POST 요청을 실행합니다. 요청 본문에 instanceFlexibilityPolicy를 포함하고 instanceSelections 항목의 경우 instanceProperties.disks을 재정의하는 disks 필드를 포함합니다.

POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
  "count": COUNT,
  "namePattern": "test-bulk-#",
  "instanceFlexibilityPolicy": {
    "instanceSelections": {
      "selection-1": {
        "machineTypes": [
          "n2-standard-8",
          "c2-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "pd-ssd",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "SCRATCH",
            "initializeParams": {
              "diskType": "local-ssd"
            }
          }
        ]
      },
      "selection-2": {
        "machineTypes": [
          "c3-standard-8"
        ],
        "disks": [
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 50,
              "sourceImage": "IMAGE_URL"
            },
            "boot": true
          },
          {
            "type": "PERSISTENT",
            "initializeParams": {
              "diskType": "hyperdisk-balanced",
              "diskSizeGb": 128,
              "sourceImage": "IMAGE_URL"
            }
          }
        ]
      }
    }
  }
}

다음을 바꿉니다.

  • COUNT: 만들 VM 수입니다.
  • IMAGE_URL: 부팅 디스크 이미지의 URL입니다.
  • PROJECT_ID: 프로젝트 ID입니다.
  • REGION: VM을 만들 리전입니다.