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, você poderá aumentar a taxa de sucesso do provisionamento do número necessário de VMs configurando a flexibilidade de instâncias. Com a flexibilidade de instâncias, é possível especificar um ou mais tipos de máquinas adequados para sua carga de trabalho. O Compute Engine provisiona VMs usando um ou mais desses tipos de máquinas, com base na capacidade e na disponibilidade de cota. Uma única solicitação de inserção em massa pode criar VMs de vários tipos de máquinas 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.
Este documento descreve como a flexibilidade de instâncias funciona para VMs criadas em massa, incluindo substituições de propriedades de instâncias para plataforma de CPU mínima e discos, além de limitações. 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áquinas 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áquinas.
Também é possível especificar tipos de máquinas que são executados em plataformas de CPU diferentes, têm arquiteturas diferentes (como x86 e Arm) ou têm requisitos de disco diferentes. Para usar tipos de máquinas com requisitos de hardware diferentes, use uma
seleção de instâncias para substituir as propriedades correspondentes das propriedades de instância da solicitação (instanceProperties). Para mais informações, consulte Substituições de propriedades de instâncias em seleções de instâncias.
Quando o Compute Engine recebe a solicitação, ele primeiro valida os tipos de máquinas 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âncias, as seleções com uma classificação mais baixa serão priorizadas. Em cada classificação, o Compute Engine considera reservas não utilizadas e orientações de VM spot para selecionar tipos de máquinas com menor probabilidade de interrupção.
Substituições de propriedades de instâncias em seleções de instâncias
Ao fazer uma seleção de instâncias, é possível especificar outras propriedades de instâncias, 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 seleciona 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 nenhuma substituição para uma seleção de instâncias, o Compute Engine usará as propriedades correspondentes de instanceProperties para as VMs criadas a partir dessa seleção.
A substituição de propriedades de instâncias no nível de seleção de instâncias oferece mais controle e flexibilidade ao usar configurações de hardware diferentes 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 a partir dos
tipos de máquina em uma seleção de instâncias. Essa substituição permite misturar diferentes tipos de máquinas e aplicar seletivamente plataformas de CPU mínimas. Cada tipo de máquina em uma seleção de instâncias precisa oferecer suporte à 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 para os tipos de máquinas na seleção de instâncias.
Para misturar tipos de máquinas em que apenas uma série oferece suporte a uma plataforma de CPU específica, coloque-os em seleções de instâncias separadas. Por exemplo, os tipos de máquinas N4 oferecem suporte à plataforma Intel Emerald Rapids, enquanto os tipos de máquinas N2 com menos de 96 vCPUs oferecem suporte ao Intel Ice Lake e ao Intel Cascade Lake. Para misturar N4 e N2 em uma solicitação de inserção em massa e exigir que o N2 seja executado no Intel Ice Lake, configure duas seleções de instâncias da seguinte maneira:
- Seleção N2:defina o campo
minCpuPlatformcomoIntel Ice Lake. - Seleção N4:deixe o campo
minCpuPlatformnão definido ou defina-o comoAUTOMATIC.
É possível definir a mesma preferência para os dois tipos de máquinas atribuindo a mesma classificação às duas seleções de instâncias.
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 misturar tipos de máquinas que têm arquiteturas diferentes ou oferecem suporte a tipos de discos diferentes. Ela também permite especificar as imagens ou os discos de inicialização necessários para cada tipo de máquina.
Por exemplo, é possível usar seleções de instâncias separadas para substituir discos para diferentes requisitos:
- Arquiteturas diferentes:é possível misturar tipos de máquinas C4 (arquitetura x86) e C4A (arquitetura Arm). Como os tipos de máquinas x86 e Arm exigem imagens de inicialização diferentes, é possível substituir o disco de inicialização para especificar uma imagem compatível para cada arquitetura.
- Tipos de discos diferentes:é possível misturar tipos de máquinas N2 e N4. Como o N2 oferece suporte apenas ao Persistent Disk para discos de inicialização e o N4 oferece suporte apenas ao Google Cloud Hyperdisk, é possível substituir a configuração do disco para especificar um tipo de disco compatível para cada série de máquinas.
Em ambos os cenários, é possível definir a mesma preferência para os dois tipos de máquinas atribuindo a mesma classificação às seleções de instâncias.
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 vai anexá-lo como um disco adicional. É necessário garantir que a configuração de disco efetiva seja compatível com todos os tipos de máquinas na seleção de instâncias.
O diagrama a seguir mostra como o Compute Engine mescla configurações de disco de instanceProperties e uma seleção de instâncias:
Para instruções sobre como especificar a plataforma de CPU mínima e as substituições de disco quando você criar VMs em massa, consulte Criar VMs com vários tipos de máquinas, 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: substituições de plataforma de CPU mínima e 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 plataformas de CPU, imagens de inicialização ou tipos de discos diferentes.
Considere uma solicitação de inserção em massa com a seguinte configuração base instanceProperties que define um disco de inicialização pd-balanced padrão:
"instanceProperties": {
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "pd-balanced"
}
}
],
"networkInterfaces": [{}]
}
A seguinte configuração instanceFlexibilityPolicy na mesma solicitação substitui a configuração base instanceProperties especificando a plataforma mínima de CPU e as configurações de disco em três seleções de instâncias:
"instanceFlexibilityPolicy": {
"instanceSelections": {
"first-preference": {
"rank": 1,
"machineTypes": ["n4-standard-4"],
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "hyperdisk-balanced"
}
}
]
},
"second-preference": {
"rank": 2,
"machineTypes": ["c4a-standard-4"],
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12-arm64",
"diskSizeGb": "10",
"diskType": "hyperdisk-balanced"
}
},
{
"autoDelete": true,
"deviceName": "data-disk",
"boot": false,
"initializeParams": {
"diskSizeGb": "100",
"diskType": "hyperdisk-balanced"
}
}
]
},
"third-preference": {
"rank": 3,
"machineTypes": ["n2-standard-4"],
"minCpuPlatform": "Intel Ice Lake",
"disks": [
{
"autoDelete": true,
"deviceName": "boot-disk",
"boot": true,
"initializeParams": {
"sourceImage": "projects/debian-cloud/global/images/family/debian-12",
"diskSizeGb": "10",
"diskType": "pd-ssd"
}
}
]
}
}
}
Neste exemplo, o Compute Engine aplica as seguintes substituições, dependendo da seleção de instâncias usada para criar VMs:
- Primeira preferência (
first-preference) : para VMsn4-standard-4, a seleção substituiboot-diskpara usar um discohyperdisk-balancedem vez do disco basepd-balanced. - Segunda preferência (
second-preference) : para VMsc4a-standard-4(Arm), a seleção substituiboot-diskpara usar uma imagem de inicialização compatível com Arm (debian-12-arm64) em um discohyperdisk-balancede anexa um discohyperdisk-balancedadicional de 100 GB chamadodata-disk. - Terceira preferência (
third-preference) : para VMsn2-standard-4, a seleção defineminCpuPlatformcomoIntel Ice Lakee substituiboot-diskpara usar um discopd-ssd.
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 provisionamento de 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áquinas 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 tipos de máquinas com uma preferência maior.ANY: o Compute Engine seleciona zonas com recursos disponíveis. Se as classificações estiverem configuradas, o Compute Engine vai priorizar as zonas para provisionar VMs com tipos de máquinas 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 necessário de VMs (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 necessário de VMs (minCount), toda a operação vai falhar e o Compute Engine não vai criar nenhuma VM. Ao usar minCount com flexibilidade de instâncias, o Compute Engine prioriza o provisionamento de VMs com base na disponibilidade em vez da 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 preferência mais baixa. 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 tiver capacidade para provisionar uma VM de preferência maior ou seis VMs de preferência mais baixa, o Compute Engine vai provisionar as seis VMs de preferência mais baixa. - Se o Compute Engine puder provisionar o mesmo número máximo de VMs até
countusando seleções de instâncias diferentes, ele vai 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âncias de preferência maior ou menor, o Compute Engine vai provisionar as seis VMs da seleção de preferência maior.
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áquinas e da compatibilidade zonal deles, excluindo todas as entradas inválidas da consideração. Se pelo menos uma configuração válida permanecer após essa verificação inicial, o Compute Engine vai continuar 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áquinas a serem usados para 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 vai falhar com erros de validação. Essa falha pode ocorrer mesmo que outras configurações na instanceFlexibilityPolicy tenham sido inicialmente válidas.
Limitações
As limitações a seguir se aplicam ao usar a flexibilidade de instâncias para a criação de VMs em massa:
- É possível especificar a flexibilidade de instâncias apenas para solicitações
bulkInsertregionais. Não é possível usá-la com solicitações zonais. - A flexibilidade de instâncias não oferece suporte a VMs flex-start e reservas adiantadas.
- Não é possível usar a flexibilidade de instâncias com recursos do Hipercomputador de IA ou com GPUs A3 Ultra, A4 e mais recentes.
- É possível especificar um máximo de 10 tipos de máquinas diferentes em um máximo de 10 seleções de instâncias diferentes.
- Ao substituir
minCpuPlatformoudisksem uma seleção de instâncias, as seguintes limitações também se aplicam:- Ao configurar
minCpuPlatformoudiskspara uma seleção de instâncias, também é necessário 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áquinas que permitem escolher um número de discos SSD locais.
Não é possível substituir discos SSD locais para
-lssdvariantes de tipos de máquinas, 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.