서로 같지만 상호 독립적인 가상 머신(VM) 인스턴스를 여러 개 만들려면 Google Cloud CLI 또는 Compute Engine API를 사용하여 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
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
- 프로젝트에 대한
compute.instances.create
권한 -
커스텀 이미지를 사용하여 VM 만들기: 이미지에 대한
compute.images.useReadOnly
권한 -
스냅샷을 사용하여 VM 만들기: 스냅샷에 대한
compute.snapshots.useReadOnly
권한 -
인스턴스 템플릿을 사용하여 VM 만들기: 인스턴스 템플릿에 대한
compute.instanceTemplates.useReadOnly
권한 -
VM에 레거시 네트워크 할당: 프로젝트에 대한
compute.networks.use
권한 -
VM의 고정 IP 주소 지정: 프로젝트에 대한
compute.addresses.use
권한 -
레거시 네트워크 사용 시 VM에 외부 IP 주소 할당: 프로젝트에 대한
compute.networks.useExternalIp
권한 -
VM의 서브넷 지정: 프로젝트 또는 선택한 서브넷에 대한
compute.subnetworks.use
권한 -
VPC 네트워크를 사용할 때 VM에 외부 IP 주소 할당: 프로젝트 또는 선택한 서브넷에 대한
compute.subnetworks.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
권한 NAME_PATTERN: VM의 이름 패턴 Compute Engine에 일련의 해시(
#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAMES: 생성할 VM의 사전 정의된 이름 목록. 이 플래그를 사용하여
COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.REGION: VM을 생성할 리전
COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는--predefined-names
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.LOCATION_POLICY: 리전 내에 포함하거나 제외할 영역. 영역을 키로 사용하고 정책을 값으로 사용하여 키-값 쌍 목록을 사용합니다. 정책에 유효한 값은
allow
(기본값) 및deny
입니다. 이 플래그의 예시 값은 다음과 같습니다.--location-policy=us-east1-b=allow,us-east1-c=deny
TARGET_SHAPE: 지정된 영역에서 VM 분산입니다.
--location-policy
플래그를 사용하여 영역을 지정합니다. 다음 표에는 이 플래그의 유효한 값이 나와 있습니다.값 설명 ANY_SINGLE_ZONE
단일 영역에서 VM 배치를 적용하고 미사용 예약의 사용률에 우선순위를 지정합니다. 영역 간 네트워크 이그레스를 방지하거나 네트워크 지연 시간을 줄이려면 이를 사용합니다. 이 설정이 기본 설정입니다. BALANCED
리전의 모든 영역에 VM을 균일하게 배포하려고 합니다. ANY
리전 하나의 여러 영역에 VM을 배포할 수 있습니다. 사용 가능한 리소스가 있고 미사용 영역 예약을 극대화하는 영역을 선택합니다. PROJECT_ID: 프로젝트 ID
REGION: VM을 생성할 리전
NAME_PATTERN: VM의 이름 패턴 이름을 지정하거나
perInstanceProperties
을 지정하세요. Compute Engine에 일련의 해시(#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: 생성할 VM의 사전 정의된 이름 목록입니다. 이름을 지정하거나
namePattern
을 지정하세요. 이 플래그를 사용하여COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는perInstanceProperties
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.LOCATION_POLICY: 리전 내에 포함하거나 제외할 영역. 영역을 키로 사용하고 정책을 값으로 사용하여 키-값 쌍 목록을 사용합니다. 정책에 유효한 값은
ALLOW
(기본값) 및DENY
입니다. 이 필드의 예시 값은 다음과 같습니다."locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 지정된 영역에서 VM 분산.
locationPolicy
필드를 사용하여 영역을 지정합니다. 다음 표에는 이 필드의 유효한 값이 나와 있습니다.값 설명 ANY_SINGLE_ZONE
단일 영역에서 VM 배치를 적용하고 미사용 예약의 사용률에 우선순위를 지정합니다. 영역 간 네트워크 이그레스를 방지하거나 네트워크 지연 시간을 줄이려면 이를 사용합니다. 이 설정이 기본 설정입니다. BALANCED
리전의 모든 영역에 VM을 균일하게 배포하려고 합니다. ANY
리전 하나의 여러 영역에 VM을 배포할 수 있습니다. 사용 가능한 리소스가 있고 미사용 영역 예약을 극대화하는 영역을 선택합니다. NAME_PATTERN: VM의 이름 패턴 Compute Engine에 일련의 해시(
#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAMES: 생성할 VM의 사전 정의된 이름 목록. 이 플래그를 사용하여
COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.ZONE: VM을 생성할 영역입니다.
COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는--predefined-names
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.PROJECT_ID: 프로젝트 ID
ZONE: VM을 생성할 영역입니다.
NAME_PATTERN: VM의 이름 패턴 이름을 지정하거나
perInstanceProperties
을 지정하세요. Compute Engine에 일련의 해시(#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: 생성할 VM의 사전 정의된 이름 목록입니다. 이름을 지정하거나
namePattern
을 지정하세요. 이 플래그를 사용하여COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는perInstanceProperties
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.VM_NAME.c.PROJECT_ID.internal
전역 DNS를 사용 설정하는 경우VM_NAME.ZONE.c.PROJECT_ID.internal
영역 DNS를 사용 설정하는 경우NAME_PATTERN: VM의 이름 패턴 Compute Engine에 일련의 해시(
#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAMES: 생성할 VM의 사전 정의된 이름 목록. 이 플래그를 사용하여
COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.[VM_NAME=HOSTNAME, ...]: VM에 사전 정의된 이름의 키-값 쌍과 VM에 할당할 정규화된 도메인 호스트 이름의 목록입니다. 커스텀 호스트 이름은 유효한 호스트 이름의 RFC 1035 요구사항을 준수해야 합니다.
REGION: VM을 생성할 영역입니다.
COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는--predefined-names
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.LOCATION_POLICY: 리전 내에 포함하거나 제외할 영역. 영역을 키로 사용하고 정책을 값으로 사용하여 키-값 쌍 목록을 사용합니다. 정책에 유효한 값은
ALLOW
(기본값) 및DENY
입니다. 이 필드의 예시 값은 다음과 같습니다."locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 지정된 영역에서 VM 분산.
locationPolicy
필드를 사용하여 영역을 지정합니다. 다음 표에는 이 필드의 유효한 값이 나와 있습니다.값 설명 ANY_SINGLE_ZONE
단일 영역에서 VM 배치를 적용하고 미사용 예약의 사용률에 우선순위를 지정합니다. 영역 간 네트워크 이그레스를 방지하거나 네트워크 지연 시간을 줄이려면 이를 사용합니다. 이 설정이 기본 설정입니다. BALANCED
리전의 모든 영역에 VM을 균일하게 배포하려고 합니다. ANY
리전 하나의 여러 영역에 VM을 배포할 수 있습니다. 사용 가능한 리소스가 있고 미사용 영역 예약을 극대화하는 영역을 선택합니다. PROJECT_ID: 프로젝트 ID
REGION: VM을 생성할 리전
NAME_PATTERN: VM의 이름 패턴 이름을 지정하거나
perInstanceProperties
을 지정하세요. Compute Engine에 일련의 해시(#
) 문자를 사용하여 일련의 숫자로 바꿉니다. 예를 들어 이름 패턴에vm-#
을 사용하면vm-1
,vm-2
등의 이름으로 VM이 생성되므로 최대--count
에서 지정한 최대 VM 수는 이름 패턴에서 허용하는 VM 수보다 작거나 같아야 합니다.이름 패턴을 사용할 경우 Compute Engine은 이전 요청에서 생성된 기존 VM의 이름을 확인하여 이름 충돌을 방지합니다.
PREDEFINED_NAME_1, PREDEFINED_NAME_2, ...: 생성할 VM의 사전 정의된 이름 목록입니다. 이름을 지정하거나
namePattern
을 지정하세요. 이 플래그를 사용하여COUNT
를 지정하는 경우COUNT
는 제공된 이름 수와 같아야 합니다.HOSTNAME_1, HOSTNAME_2, ...: VM에 할당할 정규화된 도메인 호스트 이름입니다. 커스텀 호스트 이름은 유효한 호스트 이름의 RFC 1035 요구사항을 준수해야 합니다.
예를 들어 각각 커스텀 호스트 이름
my-host1234.example.com
및test.example.com
으로 2개의 VMvm-1
과vm-2
를 만들려면 다음과 같이perInstanceProperties
에서hostname
속성을 지정합니다.{ ... "perInstanceProperties": { "vm-1": { "hostname": "my-host1234.example.com" }, "vm-2": { "hostname": "test.example.com" }, ... },
COUNT: 만들 VM 수. 이 수는
NAME_PATTERN
에서 허용하는 VM 수보다 작거나 같아야 합니다. 또는perInstanceProperties
를 사용하는 경우에는COUNT
를 지정할 필요는 없지만, 지정할 경우 제공된 이름 수와 동일해야 합니다.MIN_COUNT: 만들 최소 VM 수. 다음 표에서는 이 플래그 설정 방법에 따른 요청 동작을 설명합니다.
값 설명 설정되지 않음 기본값은 COUNT
입니다. Compute Engine에서COUNT
로 지정된 VM 수를 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.1
Compute Engine은 가능한 한 많은 VM을 최대 COUNT
개까지 만듭니다.1
보다 크고COUNT
보다 작음Compute Engine은 VM을 최소 MIN_COUNT
이상, 최대COUNT
이하로 만듭니다.MIN_COUNT
VM을 만들 수 없으면 요청이 실패하고 VM이 생성되지 않습니다.LOCATION_POLICY: 리전 내에 포함하거나 제외할 영역. 영역을 키로 사용하고 정책을 값으로 사용하여 키-값 쌍 목록을 사용합니다. 정책에 유효한 값은
ALLOW
(기본값) 및DENY
입니다. 이 필드의 예시 값은 다음과 같습니다."locations": { "zones/us-central1-a": { "preference": "ALLOW" }, "zones/us-central1-c": { "preference": "DENY" }, ... },
TARGET_SHAPE: 지정된 영역에서 VM 분산.
locationPolicy
필드를 사용하여 영역을 지정합니다. 다음 표에는 이 필드의 유효한 값이 나와 있습니다.값 설명 ANY_SINGLE_ZONE
단일 영역에서 VM 배치를 적용하고 미사용 예약의 사용률에 우선순위를 지정합니다. 영역 간 네트워크 이그레스를 방지하거나 네트워크 지연 시간을 줄이려면 이를 사용합니다. 이 설정이 기본 설정입니다. BALANCED
리전의 모든 영역에 VM을 균일하게 배포하려고 합니다. ANY
리전 하나의 여러 영역에 VM을 배포할 수 있습니다. 사용 가능한 리소스가 있고 미사용 영역 예약을 극대화하는 영역을 선택합니다. PROJECT_ID
: VM을 만들 프로젝트의 IDREGION
: VM을 만들 리전ZONE
: VM을 만들 영역OPERATION_ID
: 일괄 삽입 작업 IDstatus
: 상태는 다음 중 하나입니다.CREATING
: VM 생성이 진행 중입니다.ROLLING_BACK
: 요청이 실패하여 롤백되는 중입니다.DONE
: VM 생성 또는 롤백이 성공적으로 완료되었습니다.
targetVmCount
: 지정된 영역에 만들 VM 수입니다.createdVmCount
: 지정된 영역에 이미 생성된 VM 수입니다.failedToCreateVmCount
: 지정된 영역에서 생성에 실패한 VM 수입니다.deletedVmCount
: 실패한 작업의 롤백의 일부로 삭제된 VM 수입니다.요청에서 반환된
Operation
에서operationGroupId
속성 값을 가져옵니다.gcloud compute operations list
명령어로operationGroupId
속성을 필터로 사용하여 리전 또는 영역 요청과 연결된 VM의 프로젝트에서 모든 작업과 모든 영역을 검색합니다.gcloud compute operations list \ --filter=(operationGroupId=OPERATION_GROUP_ID)
다음 중 하나를 수행하여 VM의 나머지 속성을 가져오세요.
작업 목록에서
targetLink
는 VM 경로를 나타냅니다. 이 경로와 함께gcloud compute instances describe
명령어를 VM 이름으로 사용하여 VM 속성을 가져옵니다.gcloud compute instances describe VM_NAME
작업 목록에서 VM 이름이 포함된 필터와 함께
gcloud compute instances list
명령어를 사용합니다.gcloud compute instances list VM_NAME \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
gcloud compute instances list
명령어를 사용하여 모든 영역과 리전의 VM 속성을 가져오고, 인스턴스 고유의 라벨 또는 인스턴스 이름으로 필터링합니다.gcloud compute instances list \ --filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
요청에서 반환된
Operation
에서operationGroupId
속성 값을 가져옵니다.operationGroupId
속성을 사용하여 리전 또는 영역 요청과 관련된 VM 작업 목록을 가져옵니다.리전 요청을 전송한 경우 프로젝트의 모든 작업과 모든 영역을 검색하려면
globalOperations.aggregatedList
메서드를 사용하고operationGroupId
속성을 필터로 사용합니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/operations?filter=(operationGroupId=OPERATION_GROUP_ID)
영역 요청을 전송한 경우 해당 영역의 작업을 나열하려면
zoneOperations.get
메서드를 사용하고 요청 본문에operationGroupId
속성을 포함합니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/bulkInsert { ... "operationGroupId":"OPERATION_GROUP_ID" ... }
다음 중 하나를 수행하여 VM의 나머지 속성을 가져오세요.
작업 목록에서
targetLink
는 VM 경로를 나타냅니다.instances.get
메서드를 이 경로와 함께 VM 이름으로 사용하여 VM의 모든 속성을 가져옵니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances/VM_NAME
작업 목록에서 VM의 이름이 포함된 필터와 함께
instances.get
메서드를 사용합니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/zones/ZONE/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
instances.aggregatedList
메서드를 사용하여 모든 영역과 리전의 VM 속성을 가져오고, 인스턴스 고유의 라벨 또는 인스턴스 이름으로 필터링합니다.GET https://compute.googleapis.com/compute/v1/projects/PROJECT_NAME/aggregated/instances?filter=(name=VM_NAME_1) OR (name=VM_NAME_2)
영역 내에 만들 VM 수를 지정하세요.
nTarget = 1000
VM을 만들 리전을 지정하세요.
acceptableRegions = ["us-central1", "us-east1", "us-west1"]
리전을 반복하고 성공할 때까지 각 리전에 VM 만들기를 시도하세요.
for region in acceptableRegions: call bulk API: region=region, location-policy=location-policy, count=nTarget if request succeeds and the operation succeeds: break
생성할 VM 수와 VM을 생성할 리전을 지정하세요.
nTarget = 1000 region = "us-central1"
VM을 만들 머신 계열을 지정하세요.
acceptableMachineFamilies = ["n2","c2","e2","n1"]
머신 유형 집합을 반복하면서 성공할 때까지 머신 유형에서 VM 생성을 시도하세요.
for family in acceptableMachineFamilies: call bulk APIs: region=region, count=nTarget, machineFamily=family if request succeeds and the operation succeeds: break
생성할 VM 수, 생성된 총 VM 수를 추적하는 카운터, VM을 만들 리전, Compute Engine이 VM을 생성하는 영역을 저장할 변수를 지정하세요.
nTarget = 10000 nCreated = 0 region = "us-central1" targetZone = ""
초기 요청을 실행하여 VM 5,000개를 만들고 요청에서 반환된 영역을 저장한 후 생성된 VM 수의 카운터를 업데이트합니다.
call bulk API: region=region, count=5000 targetZone = zone chosen by bulk API nCreated += # of VMs created
요청을 계속 실행하면 Compute Engine에서 VM을 지정된 수만큼 만들 때까지 영역 하나에서 VM을 한 번에 최대 5,000개까지 만들 수 있습니다.
while(nTarget - nCreated > 0): call bulk API: zone=targetZone, count=5000 nCreated += # of VMs created
만들 VM 수, VM을 만들 영역, 이름을 저장할 데이터 구조를 지정하세요.
nTarget = 1000 targetZone = "us-central-1a" names = []
패턴의 VM 이름을 생성하고 데이터 구조에 추가하세요.
for n in range(0, 1000): names.push("instance-%d".format(n))
VM을 만들고
perInstanceProperties
을 사용하여 이름을 지정하세요.call bulk API(zone=targetZone, count=nTarget, names=perInstanceProperties)
세부정보를 반환하기 위해 VM의 이름 필터와 함께
instances.list
메서드를 사용하여 VM의 세부정보를 가져옵니다.instances.list(filter=(name = "instance-1") OR (name = "instance-2") ...)
VM을 비관리형 인스턴스 그룹에 추가합니다. 비관리형 인스턴스 그룹에 VM 을 추가하면 Cloud Monitoring을 사용할 수 있습니다. 비관리형 인스턴스 그룹에서는 부하 분산이나 VM 수명 주기 관리를 제공하지 않습니다.
라벨을 사용합니다. 라벨을 사용하면 키-값 쌍을 사용하여 리소스를 구성할 수 있습니다.
REST
로컬 개발 환경에서 이 페이지의 REST API 샘플을 사용하려면 gcloud CLI에 제공하는 사용자 인증 정보를 사용합니다.
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
자세한 내용은 Google Cloud 인증 문서의 REST 사용 인증을 참조하세요.
필요한 역할
VM 일괄 생성에 필요한 권한을 얻으려면 관리자에게 프로젝트에 대한 Compute 인스턴스 관리자(v1)(
roles/compute.instanceAdmin.v1
) IAM 역할을 부여해 달라고 요청하세요. 역할 부여에 대한 자세한 내용은 액세스 관리를 참조하세요.이 사전 정의된 역할에는 VM 일괄 생성에 필요한 권한이 포함되어 있습니다. 필요한 정확한 권한을 보려면 필수 권한 섹션을 펼치세요.
필수 권한
VM을 일괄 생성하려면 다음 권한이 필요합니다.
커스텀 역할이나 다른 사전 정의된 역할을 사용하여 이 권한을 부여받을 수도 있습니다.
리전 하나에서 VM 일괄 생성
리전 하나에서 VM을 일괄 생성하려면 gcloud CLI 또는 Compute Engine API를 사용합니다.
사용자가 머신 유형을 지정하거나 GPU 또는 로컬 SSD와 같은 추가 하드웨어를 지원하면 Compute Engine은 해당 머신 유형 및 추가 하드웨어를 지원하는 리전 내 영역에 VM을 배치합니다.
gcloud
리전 하나에서 VM을 일괄 생성하려면 다음
gcloud compute instances bulk create
명령어를 사용합니다.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --region=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT \ ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_SHAPE ]
다음을 바꿉니다.
REST
리전 하나에서 VM을 일괄 생성하려면 다음
instances.bulkInsert
메서드를 사용합니다.POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
다음을 바꿉니다.
영역 하나에서 VM 일괄 생성
영역 하나에서 VM을 일괄 생성하려면 gcloud CLI 또는 Compute Engine API를 사용합니다.
gcloud
특정 영역에서 VM을 일괄 생성하려면 다음
gcloud compute instances bulk create
명령어를 사용합니다.gcloud compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --zone=ZONE \ --count=COUNT \ [ --min-count=MIN_COUNT ]
다음을 바꿉니다.
REST
영역 하나에서 VM을 일괄 생성하려면 다음
instances.bulkInsert
메서드를 사용합니다.POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/zones/ZONE/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {}, "PREDEFINED_NAME_2": {}, ... }, "count": COUNT, "minCount": MIN_COUNT, ... }
다음을 바꿉니다.
커스텀 호스트 이름으로 VM 일괄 만들기
gcloud CLI 또는 Compute Engine API를 사용하여 리전 또는 영역에서 커스텀 호스트 이름으로 VM을 일괄 생성할 수 있습니다.
커스텀 호스트 이름에 대한 DNS 레코드를 수동으로 구성해야 합니다. 자세한 내용은 제한사항을 참조하세요.
호스트 이름을 지정하지 않으면 Compute Engine이 VM의 호스트 이름을 다음 중 하나로 설정합니다.
자세한 내용은 내부 DNS 이름을 참조하세요.
gcloud
특정 리전에서 커스텀 호스트 이름으로 VM을 일괄 생성하려면 다음
gcloud beta compute instances bulk create
명령어를 사용합니다.gcloud beta compute instances bulk create \ ( --name-pattern="NAME_PATTERN" | --predefined-names=[PREDEFINED_NAMES] ) \ --per-instance-hostnames=[VM_NAME=HOSTNAME,...] \ --zone=REGION \ --count=COUNT \ [ --min-count=MIN_COUNT ] [--location-policy=LOCATION_POLICY \ ] [--target-distribution-shape=TARGET_SHAPE ]
다음을 바꿉니다.
REST
특정 리전에서 커스텀 호스트 이름으로 VM을 일괄적으로 만들려면 다음
instances.bulkInsert
메서드를 사용합니다.POST https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert { ... "namePattern": "NAME_PATTERN", "perInstanceProperties": { "PREDEFINED_NAME_1": {"hostname": HOSTNAME_1}, "PREDEFINED_NAME_2": {"hostname": HOSTNAME_2}, ... }, "count": COUNT, "minCount": MIN_COUNT, "locationPolicy": { "LOCATION_POLICY" }, "targetShape": "TARGET_SHAPE" ... }
다음을 바꿉니다.
VM 일괄 생성 요청 상태 확인
변형 요청을 만들면 폴링하여 Compute Engine에서 작업 상태를 가져올 수 있는
operation
리소스를 반환합니다. 자세한 내용은 API 응답 처리를 참조하세요.일괄 삽입 요청의 상태를 가져오려면
operation
리소스에 HTTPGET
요청을 전송합니다.GET compute/v1/projects/PROJECT_ID/zones/ZONE/operations/OPERATION_ID
리전 일괄 삽입 요청의 상태를 가져오려면 다음 요청을 보냅니다.
GET compute/v1/projects/PROJECT_ID/regions/REGION/operations/OPERATION_ID
다음을 바꿉니다.
응답의
instancesBulkInsertOperationMetadata
객체에는 다음 작업 세부정보가 포함됩니다.응답의
progress
필드는 작업 완료 비율을 나타냅니다.Compute Engine에서 최소 VM 수를 성공적으로 만들고 더 이상 VM 생성 또는 요청 롤백이 발생하지 않을 때까지는 일괄 삽입 작업의 상태가
RUNNING
입니다.일괄 삽입 작업이 진행 중이면 다음과 비슷한 응답이 표시됩니다.
{ "kind" : "compute#operation", "id": "4653028658507445766", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationType": "bulkInsert", "targetLink": "https://googleapis.com/compute/v1/projects/my-project" "targetId": 4653028658507445766, "status": "RUNNING", "progress": 2, "user": "example@google.com", "insertTime": "2023-04-23T09:57:13.474-07:00", "startTime": "2023-04-23T09:57:13.474-07:00", "selfLink": "https://googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "metadata": "instances_bulk_insert_operation_metadata": { "per_location_status": { "zones/us-central1-a": { "status": "CREATING", "targetVmCount": 50, "createdVmCount": 1 } } } }
이 예시에서는 인스턴스 하나가 성공적으로 생성되었으며 작업은 2% 완료되었습니다.
Compute Engine이
minCount
로 지정된 최소 VM 수를 성공적으로 만들거나 Compute Engine이 요청 롤백을 완료하면 작업에서DONE
상태를 반환합니다. 요청된 수의 VM을 성공적으로 만들면 다음과 비슷한 응답이 표시됩니다.{ "endTime": "2023-04-23T09:58:13.474-07:00", "id": "5053101474378293244", "insertTime": "2023-04-23T09:57:13.474-07:00", "instancesBulkInsertOperationMetadata": { "perLocationStatus": { "zones/us-central1-a": { "status": "DONE", "createdVmCount": 50, "targetVmCount": 50 } } }, "kind": "compute#operation", "name": "operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "operationGroupId": "4653028658507445766", "operationType": "bulkInsert", "progress": 100, "selfLink": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a/operations/operation-1587661030638-5a3f823c143e3-e33bbfa3-bd72185c", "startTime": "2023-09-11T16:21:55.629-07:00", "status": "DONE", "targetId": "625521788110", "targetLink": "https://www.googleapis.com/compute/v1/projects/my-project", "user": "example@google.com", "zone": "https://www.googleapis.com/compute/v1/projects/my-project/zones/us-central1-a" }
자세한 내용은
instancesBulkInsertOperationMetadata
객체 문서를 참조하세요.단일 VM 상태 확인
VM 일괄 생성 요청으로 생성된 단일 VM의 상태를 확인하려면 gcloud CLI 또는 Compute Engine API를 사용합니다.
gcloud
REST
의사코드 예시
다음 의사코드 예시에서는 VM 일괄 생성 요청을 맞춤설정하는 방법을 보여줍니다.
리전 집합의 리전 하나에서 VM 일괄 생성
다음 의사코드에서는 리전 집합의 리전 하나에 VM 1,000개를 만드는 방법을 설명합니다. 리전 집합의 리전 하나에 VM을 일괄 생성하려는 경우 먼저 요청에서 용량을 확인합니다. 용량이 부족하면 요청이 즉시 실패하고 집합의 다음 리전을 사용하여 다시 시도합니다.
머신 유형의 영역 하나에서 VM 일괄 생성
다음 의사코드에서는 지정된 머신 유형의 영역 하나에 VM을 여러 개 만드는 방법을 설명합니다. 같은 머신 유형에서 VM을 일괄 생성하려는 경우 먼저 요청에서 이러한 머신 유형의 가용성을 확인합니다. 사용 가능한 머신 유형이 부족하면 요청이 즉시 실패하고 다음 머신 유형을 사용하여 다시 시도합니다.
영역 하나에 VM을 5,000개 넘게 만들기
VM을 일괄 생성할 때 요청마다 VM을 5,000개까지만 만들 수 있습니다. 다음 의사코드에서는 요청을 여러 개 실행하여 영역 하나에 VM을 5,000개 넘게 만드는 방법을 설명합니다.
VM 일괄 생성 및 상태 보기
다음 절차에서는 사전 정의된 이름의 VM 그룹을 만든 후 상태를 보는 방법을 보여줍니다.
다음 단계
VM을 일괄 생성한 후 다음 중 하나 또는 둘 다 수행하여 VM 관리를 간소화합니다.
달리 명시되지 않는 한 이 페이지의 콘텐츠에는 Creative Commons Attribution 4.0 라이선스에 따라 라이선스가 부여되며, 코드 샘플에는 Apache 2.0 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 Google Developers 사이트 정책을 참조하세요. 자바는 Oracle 및/또는 Oracle 계열사의 등록 상표입니다.
최종 업데이트: 2024-09-05(UTC)
-