Ao criar máquinas virtuais (VMs) em massa em uma região usando o Compute Engine, se o aplicativo não estiver restrito a um único tipo de máquina, será possível aumentar a taxa de sucesso do provisionamento do número necessário de VMs configurando a flexibilidade de instâncias. A flexibilidade de instâncias permite especificar um ou mais tipos de máquina adequados para sua carga de trabalho. Em seguida, o Compute Engine provisiona VMs usando um ou mais desses tipos de máquina, com base na capacidade e na disponibilidade de cotas. Uma única solicitação de inserção em massa pode criar VMs de vários tipos de máquina diferentes.
A flexibilidade de instâncias ajuda a maximizar a disponibilidade de recursos durante picos de demanda, melhorar o custo-benefício e adotar com segurança o hardware mais recente. Para mais informações, consulte Otimizar o provisionamento de computação.
Neste documento, descrevemos como a flexibilidade de instâncias funciona para VMs criadas em massa, incluindo as limitações e as substituições de propriedades de instância para discos e plataformas de CPU mínimas. Para mais informações sobre como configurar a flexibilidade de instâncias, consulte Criar VMs em massa com flexibilidade de instâncias.
Usar a flexibilidade de instâncias
Para configurar a flexibilidade de instâncias, liste os tipos de máquina adequados definindo
uma ou mais seleções de instâncias na solicitação de inserção em massa regional.
Por exemplo, em uma solicitação REST, inclua o objeto instanceFlexibilityPolicy,
em que você define um ou mais objetos instanceSelections,
cada um contendo uma lista de tipos de máquina.
instanceProperties). Para mais informações, consulte Substituições de propriedades de instância em seleções de instâncias.
Quando o Compute Engine recebe a solicitação, ele primeiro valida os tipos de máquina e a compatibilidade zonal deles, excluindo todas as entradas inválidas. Se houver pelo menos uma configuração válida, a operação vai continuar.
Em seguida, o Compute Engine tenta provisionar VMs com base no hardware, na cota e nas reservas disponíveis. Se você configurar classificações para as seleções de instância, as seleções com uma classificação mais baixa serão priorizadas. Em cada classificação, o Compute Engine considera as reservas não utilizadas e as orientações de VM spot para selecionar tipos de máquina com menor probabilidade de preempção.
Substituições de propriedades de instância em seleções de instâncias
Ao fazer uma seleção de instâncias, é possível especificar outras propriedades de instância, como plataforma de CPU mínima (minCpuPlatform) e discos (disks), para substituir ou adicionar às propriedades definidas nas propriedades de instância da solicitação (instanceProperties). Quando o Compute Engine escolhe um tipo de máquina de uma seleção de instâncias para criar VMs, ele usa as propriedades de instância especificadas nessa seleção. Se você não especificar substituições para uma
seleção de instância, o Compute Engine vai usar as propriedades correspondentes
de instanceProperties para as VMs criadas com base nessa seleção.
Substituir as propriedades da instância no nível de seleção da instância oferece mais controle e flexibilidade ao usar diferentes configurações de hardware em uma única solicitação de inserção em massa.
Substituições de plataforma de CPU mínima
É possível especificar uma plataforma de CPU
mínima (minCpuPlatform)
para VMs que o Compute Engine cria com base nos tipos de máquina em uma
seleção de instâncias. Essa substituição permite misturar diferentes tipos de máquina e
aplicar seletivamente plataformas de CPU mínimas. Cada tipo de máquina em uma seleção de instância
precisa ser compatível com a plataforma de CPU mínima efetiva, seja especificada na
seleção ou herdada de instanceProperties.
Como alternativa, é possível definir o campo minCpuPlatform como AUTOMATIC. Essa
configuração substitui o valor minCpuPlatform em instanceProperties e permite que o
Compute Engine use qualquer plataforma de CPU compatível com os tipos de máquina na
seleção de instâncias.
Para misturar tipos de máquina em que apenas uma série é compatível com uma plataforma de CPU específica, coloque-os em seleções de instâncias separadas. Por exemplo, os tipos de máquina C4 são compatíveis com a plataforma Intel Emerald Rapids, enquanto os tipos de máquina C3 são compatíveis com a plataforma Intel Sapphire Rapids. Para misturar C4 e C3 em uma solicitação de inserção em massa e exigir que C3 seja executado no Intel Sapphire Rapids, configure duas seleções de instância da seguinte maneira:
- Seleção C3: defina o campo
minCpuPlatformcomoIntel Sapphire Rapids. - Seleção C4: deixe o campo
minCpuPlatformsem definição ou defina-o comoAUTOMATIC.
É possível definir a mesma preferência para os dois tipos de máquina atribuindo a mesma classificação às duas seleções de instância.
Substituições de disco
É possível especificar uma configuração de disco personalizada em uma seleção de instâncias para substituir
o disco de inicialização ou outros discos especificados em instanceProperties ou
para anexar outros discos.
Essa substituição permite personalizar tamanhos de disco de inicialização, imagens de inicialização ou volumes do Hyperdisk
anexados para cada série de máquinas na solicitação. Por
exemplo, é possível substituir o tamanho do disco de inicialização ou anexar um disco de dados extra
quando o Compute Engine seleciona um tipo de máquina maior, mantendo a mesma
preferência ao atribuir a mesma classificação às seleções de instância.
Se um disco em uma seleção de instâncias tiver um deviceName que corresponda a um disco em
instanceProperties, o Compute Engine vai substituir a configuração
desse disco. Se o deviceName não corresponder a nenhum disco em
instanceProperties, o Compute Engine o anexará como um disco
adicional. Verifique se a configuração de disco efetiva é compatível com
todos os tipos de máquina na seleção de instâncias.
O diagrama a seguir mostra como o Compute Engine mescla as configurações de disco de instanceProperties e uma seleção de instância:
Para
instruções sobre como especificar a plataforma de CPU mínima e as substituições de disco ao
criar VMs em massa, consulte Criar VMs com vários tipos de máquina, plataforma de CPU
mínima e substituições de
disco.
Para mais informações sobre as limitações ao usar substituições de seleção de instâncias, consulte a seção Limitações neste documento.
Exemplo: plataforma de CPU mínima e substituições de disco
É possível usar substituições em uma política de flexibilidade de instâncias para provisionar VMs em séries de máquinas que exigem diferentes plataformas de CPU, imagens de inicialização ou tipos de disco.
Considere uma solicitação de inserção em massa com a seguinte configuração base deinstanceProperties
que define um disco de inicialização hyperdisk-balanced padrão:
"instanceProperties": {
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "50",
"diskType": "hyperdisk-balanced"
}
}
],
"networkInterfaces": [{}]
}
A configuração instanceFlexibilityPolicy a seguir na mesma solicitação
substitui a configuração instanceProperties base especificando a plataforma de CPU mínima
e as configurações de disco em duas seleções de instâncias:
"instanceFlexibilityPolicy": {
"instanceSelections": {
"first-preference": {
"rank": 1,
"machineTypes": ["c4-standard-4"],
"minCpuPlatform": "Intel Emerald Rapids",
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "50",
"diskType": "hyperdisk-balanced"
}
}
]
},
"second-preference": {
"rank": 2,
"machineTypes": ["c3-standard-4"],
"minCpuPlatform": "Intel Sapphire Rapids",
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "100",
"diskType": "hyperdisk-balanced"
}
},
{
"autoDelete": true,
"deviceName": "data-disk",
"boot": false,
"initializeParams": {
"diskSizeGb": "100",
"diskType": "hyperdisk-balanced"
}
}
]
}
}
}
Neste exemplo, o Compute Engine aplica as seguintes substituições, dependendo da seleção de instância usada para criar VMs:
- Primeira preferência (
first-preference): para VMsc4-standard-4, a seleção defineminCpuPlatformcomoIntel Emerald Rapidse usa um disco de inicializaçãohyperdisk-balancedde 50 GB. - Segunda preferência (
second-preference): para VMsc3-standard-4, a seleção defineminCpuPlatformcomoIntel Sapphire Rapids, substituiboot-diskpara usar um discohyperdisk-balancedde 100 GB e anexa um discohyperdisk-balancedextra de 100 GB chamadodata-disk.
Seleção de zona quando um formato de distribuição de destino é definido
Ao usar a flexibilidade de instâncias com uma solicitação bulkInsert regional, é possível
especificar um formato de distribuição de destino para controlar como
as VMs são distribuídas entre as zonas na região. O Compute Engine seleciona
zonas para provisionar VMs com base nesse formato, da seguinte maneira:
ANY_SINGLE_ZONE: o Compute Engine seleciona uma única zona que tem a maior capacidade para tipos de máquina com uma preferência maior.BALANCED: o Compute Engine distribui as VMs da maneira mais uniforme possível entre as zonas com recursos disponíveis. Em cada zona, o Compute Engine prioriza os tipos de máquina com uma preferência maior.ANY: o Compute Engine seleciona zonas com recursos disponíveis. Se as classificações estiverem configuradas, o Compute Engine priorizará as zonas para provisionar VMs com tipos de máquina com uma preferência maior.
Para mais informações, consulte Criar VMs em massa em uma região.
Provisionamento mínimo de VMs e flexibilidade de instâncias
Se você definir um valor para o número mínimo de VMs necessárias (minCount) na solicitação bulkInsert, a API
vai tentar criar pelo menos esse número de VMs. Se o Compute Engine não puder
provisionar o número mínimo de VMs necessárias (minCount), toda a operação
falhará e o Compute Engine
não criará VMs. Quando você usa minCount com flexibilidade de instâncias,
o Compute Engine prioriza o provisionamento de VMs com base na disponibilidade em relação à
classificação, da seguinte maneira:
- O Compute Engine prioriza o provisionamento do número máximo de VMs até
count, mesmo que isso signifique usar máquinas de menor preferência. Por exemplo, se a solicitação especificar um mínimo de uma VM obrigatória (minCount=1) e um máximo de 10 VMs (count=10), e se o Compute Engine tiver capacidade para provisionar uma VM de maior preferência ou seis VMs de menor preferência, o Compute Engine provisionará as seis VMs de menor preferência. - Se o Compute Engine puder provisionar o mesmo número máximo de VMs até
countusando diferentes seleções de instâncias, ele priorizará a seleção com maior preferência. Por exemplo, se a solicitação especificar um mínimo de uma VM necessária (minCount=1) e um máximo de 10 VMs (count=10), e se o Compute Engine puder provisionar seis VMs usando uma seleção de instância de preferência mais alta ou mais baixa, o Compute Engine provisionará as seis VMs da seleção de preferência mais alta.
Para mais informações, consulte a propriedade minCount em
bulkInsert.
Validação de inserção em massa e cenários de erro
O Compute Engine realiza uma validação inicial dos tipos de máquina e da compatibilidade zonal deles, excluindo todas as entradas inválidas. Se pelo menos uma configuração válida permanecer após essa verificação inicial, o Compute Engine vai prosseguir com a criação da VM.
No entanto, algumas validações da configuração só podem ocorrer depois que o Compute Engine seleciona as zonas e os tipos de máquina a serem usados para o provisionamento, com base na política de flexibilidade de instâncias e na capacidade disponível.
Se, durante essa fase de validação posterior, a combinação específica de tipo de máquina e zona
escolhida para provisionamento for considerada inválida, toda a
solicitação de inserção em massa falhará com erros de validação. Essa falha pode acontecer mesmo que outras
configurações no instanceFlexibilityPolicy tenham sido válidas inicialmente.
Limitações
As limitações a seguir se aplicam quando você usa a flexibilidade de instâncias para a criação de VMs em massa:
- Só é possível especificar a flexibilidade de instâncias para solicitações regionais de
bulkInsert. Não é possível usá-la com solicitações zonais. - A flexibilidade de instâncias não é compatível com VMs flex-start e reservas adiantadas.
- Não é possível usar a flexibilidade de instâncias com os recursos do Hipercomputador de IA ou com GPUs A3 Ultra, A4 e mais recentes.
- É possível especificar no máximo 10 tipos de máquina diferentes em até 10 seleções de instâncias diferentes.
- Ao substituir
minCpuPlatformoudisksem uma seleção de instância, as seguintes limitações também se aplicam:- Ao configurar
minCpuPlatformoudiskspara uma seleção de instância, você também precisa incluir o campomachineTypes. Se você omitir o campomachineTypes, a operação vai falhar com um erro. - É possível substituir discos SSD locais apenas para
tipos de máquina que permitem escolher um número de discos SSD locais.
Não é possível substituir discos SSD locais para
variantes
-lssdde tipos de máquina, que anexam automaticamente discos SSD locais.
- Ao configurar
A seguir
- Saiba como criar VMs em massa com flexibilidade de instâncias.
- Saiba mais sobre dimensões de flexibilidade, casos de uso e práticas recomendadas em Otimizar o provisionamento de computação.