Neste documento, descrevemos como especificar a flexibilidade da instância ao criar máquinas virtuais (VMs) em massa. Ao fazer essa especificação, você indica uma lista de tipos de máquinas adequados para as VMs, e o Compute Engine provisiona VMs usando qualquer um dos tipos de máquinas especificados com base na capacidade e na disponibilidade de cota em uma região.
Para mais informações sobre a flexibilidade da instância para VMs criadas em massa, consulte Sobre a flexibilidade da instância para VMs criadas em massa.
Antes de começar
- Para VMs e quaisquer recursos relacionados que você planeja criar, verifique se você tem cota suficiente e permissões necessárias.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a Cloud de Confiance by S3NS serviços e APIs do. Para executar
código ou amostras de um ambiente de desenvolvimento local, faça a autenticação no
Compute Engine com uma destas opções:
Selecione a guia para como planeja usar as amostras nesta página:
gcloud
-
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada. Depois de fazer login, inicialize a Google Cloud CLI executando o seguinte comando:
gcloud init
-
- Defina uma região e uma zona padrão.
REST
Para usar as amostras da API REST desta página em um ambiente de desenvolvimento local, use as credenciais fornecidas para a CLI gcloud.
Instale a Google Cloud CLI e faça login na CLI gcloud com sua identidade federada.
Saiba mais em Autenticar para usar REST na documentação de autenticação do Cloud de Confiance .
Funções exigidas
Para receber as permissões necessárias e criar VMs em massa, peça ao administrador para conceder a você o papel do IAM de Administrador da instância do Compute (v1) (roles/compute.instanceAdmin.v1) no projeto.
Para mais informações sobre a concessão de papéis, consulte Gerenciar o acesso a projetos, pastas e organizações.
Esse papel predefinido contém as permissões necessárias para criar VMs em massa. Para conferir as permissões exatas necessárias, expanda a seção Permissões necessárias:
Permissões necessárias
As seguintes permissões são necessárias para criar VMs em massa:
-
compute.instances.createno projeto -
Usar uma imagem personalizada a fim de criar a VM:
compute.images.useReadOnlyna imagem -
Usar um snapshot para criar a VM:
compute.snapshots.useReadOnlyno snapshot -
Usar um modelo de instância para criar a VM:
compute.instanceTemplates.useReadOnlyno modelo de instância -
Especificar uma sub-rede para a VM:
compute.subnetworks.useno projeto ou na sub-rede escolhida -
Especificar um endereço IP estático para a VM:
compute.addresses.useno projeto -
Atribuir um endereço IP externo à VM ao usar uma rede VPC:
compute.subnetworks.useExternalIpno projeto ou na sub-rede escolhida -
Atribuir uma rede legada à VM:
compute.networks.useno projeto -
Atribuir um endereço IP externo à VM usando uma rede legada:
compute.networks.useExternalIpno projeto -
Definir os metadados da instância de VM para a VM:
compute.instances.setMetadatano projeto -
Definir tags para a VM:
compute.instances.setTagsna VM -
Definir rótulos para a VM:
compute.instances.setLabelsna VM -
Definir uma conta de serviço a ser usada pela VM:
compute.instances.setServiceAccountna VM -
Criar um disco para a VM:
compute.disks.createno projeto -
Anexar um disco atual no modo somente leitura ou de leitura e gravação:
compute.disks.useno disco -
Anexar um disco atual no modo somente leitura:
compute.disks.useReadOnlyno disco
Essas permissões também podem ser concedidas com funções personalizadas ou outros papéis predefinidos.
Criar VMs com vários tipos de máquinas de preferência igual
Se a carga de trabalho puder operar em vários tipos de máquinas diferentes, você poderá especificar uma lista de todos os tipos de máquinas compatíveis em uma única seleção de instância. Os exemplos a seguir mostram como especificar vários tipos de máquinas de preferência igual.
gcloud
Para criar VMs em massa com uma única seleção de instância, use o gcloud compute instances bulk create
comando com a
--instance-selection-machine-types flag.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection-machine-types=MACHINE_TYPE_1,MACHINE_TYPE_2
Substitua:
COUNT: o número de VMs a serem criadasNAME_PATTERN: o padrão de nome para as VMsMACHINE_TYPE_1,MACHINE_TYPE_2: os tipos de máquinas a serem usados para as VMsREGION: a região em que as VMs serão criadas
Exemplo
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--instance-selection-machine-types=c3-standard-8,n2-standard-8,c2-standard-8
REST
Na API Compute Engine, faça uma solicitação POST para o
regionInstances.bulkInsert método.
No corpo da solicitação, inclua instanceFlexibilityPolicy com uma entrada instanceSelections que liste os tipos de máquinas.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
]
}
}
}
}
Substitua:
COUNT: o número de VMs a serem criadasNAME_PATTERN: o padrão de nome para as VMsMACHINE_TYPE_1,MACHINE_TYPE_2: os tipos de máquinas a serem usados para as VMsIMAGE_PROJECT: o projeto que contém a imagemIMAGE: o nome da imagem ou da família de imagens a ser usadaPROJECT_ID: ID do projeto;REGION: a região em que as VMs serão criadas
Exemplo
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"selection-1": {
"machineTypes": [
"c3-standard-8",
"n2-standard-8",
"c2-standard-8"
]
}
}
}
}
Criar VMs com vários tipos de máquinas classificados por preferência
Se você quiser que o Compute Engine escolha tipos de máquinas em uma ordem específica, configure várias seleções de instâncias. Cada seleção de instância inclui uma lista de tipos de máquinas e uma classificação, que é um número inteiro que define a preferência para os tipos de máquinas. Uma classificação mais baixa indica uma preferência maior. O Compute Engine tenta criar VMs usando tipos de máquinas com uma preferência maior (classificação mais baixa). Se esses tipos de máquinas não estiverem disponíveis, o Compute Engine usará tipos de máquinas com uma preferência menor (classificação mais alta).
Os exemplos a seguir mostram como especificar várias seleções de instâncias com classificações.
gcloud
Para criar VMs em massa com várias seleções de instâncias, use o gcloud compute instances bulk create
comando e
especifique a --instance-selection flag várias vezes.
gcloud compute instances bulk create \
--name-pattern=NAME_PATTERN \
--region=REGION \
--count=COUNT \
--instance-selection "name=INSTANCE_SELECTION_1,rank=0,machine-type=MACHINE_TYPE_1,machine-type=MACHINE_TYPE_2" \
--instance-selection "name=INSTANCE_SELECTION_2,rank=1,machine-type=MACHINE_TYPE_3,machine-type=MACHINE_TYPE_4"
Substitua:
COUNT: o número de VMs a serem criadasNAME_PATTERN: o padrão de nome para as VMsINSTANCE_SELECTION_1: o nome da primeira seleção de instânciaINSTANCE_SELECTION_2: o nome da segunda seleção de instânciaMACHINE_TYPE_1,MACHINE_TYPE_2: os tipos de máquinas para a primeira seleção de instânciaMACHINE_TYPE_3,MACHINE_TYPE_4: os tipos de máquinas para a segunda seleção de instânciaREGION: a região em que as VMs serão criadas
Exemplo
gcloud compute instances bulk create \
--name-pattern=test-bulk-# \
--region=us-central1 \
--count=10 \
--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
Na API Compute Engine, faça uma solicitação POST para o
regionInstances.bulkInsert método.
No corpo da solicitação, inclua instanceFlexibilityPolicy e especifique várias entradas em instanceSelections, cada uma com uma lista de tipos de máquinas e uma rank.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"rank": 1
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3",
"MACHINE_TYPE_4"
],
"rank": 2
}
}
}
}
Substitua:
COUNT: o número de VMs a serem criadasNAME_PATTERN: o padrão de nomenclatura para as VMsINSTANCE_SELECTION_1: o nome da primeira seleção de instânciaINSTANCE_SELECTION_2: o nome da segunda seleção de instânciaMACHINE_TYPE_1,MACHINE_TYPE_2: os tipos de máquinas para a primeira seleção de instânciaMACHINE_TYPE_3,MACHINE_TYPE_4: os tipos de máquinas para a segunda seleção de instânciaIMAGE_PROJECT: o projeto que contém a imagemIMAGE: o nome da imagem ou da família de imagens a ser usadaPROJECT_ID: ID do projeto;REGION: a região em que as VMs serão criadas
Exemplo
POST https://compute.googleapis.com/compute/v1/projects/my-project/regions/us-central1/instances/bulkInsert
{
"count": 10,
"namePattern": "test-bulk-#",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/debian-12"
}
}
],
"networkInterfaces": [{}]
},
"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
}
}
}
}
Especificar substituições de disco em seleções de instâncias
Por padrão, as VMs criadas por uma solicitação em massa usam a configuração de disco de instanceProperties. No entanto, é possível especificar configurações de disco em uma seleção de instância. Se você especificar discos em uma seleção de instância, essa configuração de disco vai substituir a configuração de disco em instanceProperties para VMs que usam essa seleção de instância.
O exemplo a seguir mostra como especificar discos em seleções de instâncias.
REST
Na API Compute Engine, faça uma solicitação POST para o
regionInstances.bulkInsert método.
No corpo da solicitação, inclua instanceFlexibilityPolicy e, para qualquer
instanceSelections entrada, inclua o campo disks para substituir
instanceProperties.disks.
POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/instances/bulkInsert
{
"count": COUNT,
"namePattern": "NAME_PATTERN",
"instanceProperties": {
"disks": [
{
"boot": true,
"initializeParams": {
"sourceImage": "projects/IMAGE_PROJECT/global/images/IMAGE"
}
}
],
"networkInterfaces": [{}]
},
"instanceFlexibilityPolicy": {
"instanceSelections": {
"INSTANCE_SELECTION_1": {
"machineTypes": [
"MACHINE_TYPE_1",
"MACHINE_TYPE_2"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "pd-ssd",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_1/global/images/IMAGE_1"
},
"boot": true
},
{
"type": "SCRATCH",
"initializeParams": {
"diskType": "local-ssd"
}
}
]
},
"INSTANCE_SELECTION_2": {
"machineTypes": [
"MACHINE_TYPE_3"
],
"disks": [
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 50,
"sourceImage": "projects/IMAGE_PROJECT_2/global/images/IMAGE_2"
},
"boot": true
},
{
"type": "PERSISTENT",
"initializeParams": {
"diskType": "hyperdisk-balanced",
"diskSizeGb": 128,
"sourceImage": "projects/IMAGE_PROJECT_3/global/images/IMAGE_1"
}
}
]
}
}
}
}
Substitua:
COUNT: o número de VMs a serem criadasNAME_PATTERN: o padrão de nomenclatura para as VMsINSTANCE_SELECTION_1: o nome da primeira seleção de instânciaINSTANCE_SELECTION_2: o nome da segunda seleção de instânciaMACHINE_TYPE_1,MACHINE_TYPE_2,MACHINE_TYPE_3: os tipos de máquinas a serem usados para as VMsIMAGE_PROJECT: o projeto que contém a imagemIMAGE: o nome da imagem ou da família de imagens a ser usadaPROJECT_ID: ID do projeto;REGION: a região em que as VMs serão criadas