O Google Kubernetes Engine (GKE) pode criar e gerenciar automaticamente pools de nós nos clusters com base na configuração das cargas de trabalho. Este documento descreve como funciona a criação automática de pool de nós, os parâmetros de escalonamento e o comportamento padrão, além de fornecer recomendações que podem ajudar você a melhorar a escalonabilidade. Este documento é destinado a administradores de cluster que querem reduzir os custos associados ao gerenciamento manual da infraestrutura nos clusters do modo Standard.
Você já precisa conhecer os seguintes conceitos:
No modo Autopilot, o GKE sempre cria e gerencia nós e pools de nós com base nas suas cargas de trabalho. Não é necessário configurar manualmente a criação automática de pool de nós para clusters do Autopilot ou para cargas de trabalho do Autopilot em clusters Standard. Para mais informações, consulte a visão geral do Autopilot do GKE.
O que é a criação automática de pool de nós?
No GKE, os pools de nós são grupos lógicos de nós. Todos os nós em um pool de nós têm a mesma configuração. A criação automática de pools de nós é um mecanismo de escalonamento automático de infraestrutura que permite ao GKE criar novos pools de nós no cluster que atendam aos requisitos das cargas de trabalho. O GKE gerencia esses pools de nós criados automaticamente, realizando tarefas como atualizar metadados de nós, criar e excluir nós no pool de nós e excluir todo o pool de nós quando ele não for mais necessário. A criação automática de pools de nós é uma extensão do escalonador automático de clusters do GKE, que dimensiona automaticamente os nós em pools individuais.
A criação automática de pools de nós foi projetada para permitir que o GKE reduzir escala vertical e remova automaticamente os pools de nós vazios do cluster. Não é possível definir um número mínimo de nós que cada pool de nós criado automaticamente precisa ter, porque um número mínimo maior que zero impediria a remoção de pools de nós vazios. Se o seu caso de uso exigir um número mínimo de nós para sempre serem executados no cluster, crie manualmente um pool de nós com o escalonamento automático ativado.
Como funciona
A criação automática de pools de nós estende o escalonador automático de cluster do GKE para permitir que o GKE provisione novos pools de nós que atendam aos requisitos de hardware e às solicitações de recursos de pods pendentes. Você pode definir os requisitos de hardware das seguintes maneiras:
- Use ComputeClasses, que você seleciona em vários pods usando um seletor de nós. Recomendamos esse método porque é possível definir centralmente configurações de nós comuns que várias cargas de trabalho podem usar.
- Use seletores de nó ou afinidade de nó para solicitar rótulos de nó específicos do GKE em especificações de pod.
O GKE configura novos pools de nós com base em parâmetros como os seguintes:
- Solicitações de recursos de CPU, memória e armazenamento temporário em pods e contêineres, incluindo pods gerenciados por DaemonSets.
- Solicitações de GPU e TPU em especificações de pod ou em ComputeClasses.
- Requisitos de hardware, como tipos de máquina ou tipos de disco de inicialização, nas especificações de pods pendentes ou em ComputeClasses.
- Tolerâncias nas especificações de pods pendentes que têm seletores de nós correspondentes.
O GKE configura a capacidade de recursos de cada nó em um pool de nós criado automaticamente para ser maior ou igual às solicitações de recursos dos pods pendentes. Verifique se as solicitações de recursos são grandes o suficiente para que o pod funcione conforme o esperado. Se as solicitações de pod forem muito baixas, os pods não serão executados como esperado depois que o GKE os programar em nós criados automaticamente.
Configuração de metadados do nó
O GKE também configura metadados de nós (como rótulos, anotações e taints de nós) com base nos requisitos da carga de trabalho, como nos exemplos a seguir:
- Se você solicitar a série de máquinas N2, o GKE adicionará o rótulo de nó
cloud.google.com/machine-family: n2
a cada um dos nós. - Se você selecionar uma ComputeClass no seu pod, o GKE vai adicionar um rótulo de nó com a chave
cloud.google.com/compute-class
definida como o nome dessa ComputeClass. - Se o pod tiver uma tolerância e um seletor de nós para o mesmo rótulo de nó, o GKE adicionará taints de nó para essas tolerâncias aos nós criados automaticamente.
Exclusão de pools de nós criados automaticamente
Com a criação automática de pools de nós, o escalonador automático de cluster pode criar novos pools de nós e nós para executar os pods pendentes. Se o número de pods em um pool de nós criado automaticamente diminuir, o escalonador automático de cluster vai reduzir gradualmente o pool de nós. Quando possível, o GKE esvazia os nós subutilizados no pool de nós, consolida os pods em outros nós e remove os nós vazios.
Se o número de nós em um pool de nós criado automaticamente for zero, o GKE excluirá esse pool. O GKE não exclui pools de nós que você exclui da criação automática, como os criados manualmente. Para mais informações sobre como o escalonador automático de clusters reduz os pools de nós, consulte Como o escalonador automático de clusters funciona.
Preferências de escalonamento do GKE
As preferências a seguir se aplicam quando o GKE faz escalonamento automático da sua infraestrutura:
- Reduzir o desperdício de recursos de computação: o GKE usa a capacidade de recursos dos pools de nós criados automaticamente no cluster para determinar o tipo de máquina a ser usado em novos pools de nós. À medida que o tamanho do cluster aumenta, o GKE prefere usar tipos de máquinas maiores para novos pools de nós, para que mais pods possam ser executados em cada nó do pool de nós.
- Otimizar escalonabilidade e latência: o GKE sempre prioriza o escalonamento vertical de pools de nós compatíveis em vez de criar novos pools de nós. A força dessa preferência aumenta à medida que o número de pools de nós distintos no cluster aumenta. Quando o número de pools de nós distintos se aproxima dos limites compatíveis para latência e escalonabilidade ideais, o GKE deixa de priorizar a criação de novos pools de nós.
Essas prioridades ajudam a garantir que seus clusters tenham um uso eficiente de recursos de computação em grande escala, como nos seguintes exemplos:
- Em clusters com poucos pools de nós e menos uso de recursos, o GKE cria novos pools de nós com mais frequência e usa tipos de máquinas menores para esses pools.
- Em clusters com um grande número de pools de nós, o uso de recursos é alto. O GKE cria novos pools de nós com menos frequência e usa tipos de máquinas maiores para esses pools. Assim, o agendamento de pods pode continuar, mas o progresso em direção à escalonabilidade e aos limites de latência do cluster é mais lento.
É possível controlar manualmente o tamanho mínimo das instâncias que
o GKE usa para os pools de nós criados automaticamente usando uma ComputeClass
que tenha o
campo priorities.machineFamily
e o campo priorities.minCores
ou priorities.minMemoryGb
.
Métodos de ativação para a criação automática de pool de nós
O GKE pode criar automaticamente pools de nós para ComputeClasses específicas ou para qualquer carga de trabalho que use uma configuração compatível, dependendo de como você configura o cluster.
Métodos de ativação | |
---|---|
Nível da carga de trabalho (recomendado) | No GKE versão 1.33.3-gke.1136000 e mais recentes, use ComputeClasses para ativar a criação automática de pool de nós sem usar o provisionamento automático de nós no nível do cluster. O GKE cria pools de nós apenas para cargas de trabalho que selecionam ComputeClasses específicas com a criação automática ativada. As cargas de trabalho atuais no cluster não são afetadas. Mesmo em versões do GKE anteriores a 1.33.3-gke.1136000, as ComputeClasses são a maneira recomendada de solicitar e configurar a infraestrutura para suas cargas de trabalho. As ComputeClasses oferecem recursos exclusivos e uma maneira flexível de otimizar o escalonamento no cluster. Para mais informações, consulte Sobre as ComputeClasses personalizadas. |
Nível do cluster | Ative o provisionamento automático de nós para todo o cluster. É necessário definir limites para recursos como CPU e memória no cluster. Esses limites se aplicam a todo o cluster. A configuração no nível do cluster é necessária para ativar a criação automática de pool de nós em versões do GKE anteriores a 1.33.3-gke.1136000. O GKE pode criar novos pools de nós para qualquer carga de trabalho pendente no cluster usando ComputeClasses ou seletores nas especificações do pod. |
Esses métodos de configuração não são mutuamente exclusivos. É possível usar ComputeClasses para criar automaticamente pools de nós em clusters que usam o provisionamento automático de nós. Se você usar os dois métodos para ativar a criação automática de pool de nós em um cluster, o GKE usará a seguinte ordem de preferência para encontrar o valor de uma configuração a ser usada em um pool de nós:
- ComputeClass ou especificação de pod: se você especificar uma configuração (como um tipo de máquina) em uma ComputeClass ou em uma especificação de pod, o GKE usará essa configuração.
- Provisionamento automático de nós no nível do cluster padrão: se uma configuração não for especificada em uma ComputeClass ou em uma especificação de pod, o GKE vai verificar se você definiu um valor padrão para o provisionamento automático de nós no cluster. Se houver um valor padrão no nível do cluster, o GKE vai usar esse valor.
- Padrão no nível do cluster: se uma configuração não for especificada em ComputeClasses, especificações de pod ou como um valor padrão para o provisionamento automático de nós no nível do cluster, o GKE usará o valor padrão definido pelo Google Cloud para o cluster.
Por exemplo, considere um cenário em que o GKE tenta encontrar um tipo de máquina para usar em um pool de nós criado automaticamente. A ordem de preferência anterior é aplicada da seguinte maneira:
- O GKE verifica se a especificação do pod ou a ComputeClass do pod especifica um tipo de máquina.
- Se a especificação do pod ou a ComputeClass não especificarem um tipo de máquina, o GKE vai verificar se você definiu um tipo de máquina padrão para o provisionamento automático de nós no cluster.
- Se você não definiu um tipo de máquina padrão para o provisionamento automático de nós, o GKE usa o tipo de máquina padrão do cluster.
Recomendamos usar apenas o método de ativação ComputeClass na maioria das situações. As seções a seguir fornecem detalhes sobre cada um desses métodos de configuração, incluindo limitações e considerações.
Ativação no nível da carga de trabalho com ComputeClasses
É possível ativar a criação automática de pool de nós para qualquer ComputeClass no cluster usando um dos seguintes campos na especificação da ComputeClass:
nodePoolAutoCreation
: permite que o GKE crie pools de nós automaticamente conforme necessário. Você ainda pode interagir com os pools de nós. O GKE implementa apenas as configurações ou restrições que você configura.autopilot
: execute as cargas de trabalho que selecionam essa ComputeClass no modo Autopilot. Assim como um cluster do Autopilot, o GKE gerencia totalmente os nós para você e implementa várias restrições e configurações do Autopilot. Se você usa o campoautopilot
, pule este documento. Para mais informações, consulte Sobre cargas de trabalho do modo Autopilot no Standard.
Em clusters que atendem aos seguintes requisitos, é possível usar esses campos em uma ComputeClass sem ativar o provisionamento automático de nós no nível do cluster:
- Use o GKE versão 1.33.3-gke.1136000 ou mais recente.
- Estar inscrito no canal de lançamento rápido.
Se você configurar a criação automática de pool de nós em uma ComputeClass sem ativar o provisionamento automático de nós para o cluster, o GKE vai criar pools de nós apenas para cargas de trabalho que usam a ComputeClass. Outras cargas de trabalho não são afetadas.
O manifesto de exemplo a seguir da ComputeClass ativa a criação automática de pool de nós para qualquer pod que use a ComputeClass:
apiVersion: cloud.google.com/v1
kind: ComputeClass
metadata:
name: example-computeclass
spec:
priorities:
- machineFamily: n4
- machineFamily: c4
whenUnsatisfiable: ScaleUpAnyway
nodePoolAutoCreation:
enabled: true
Ativação no nível do cluster com provisionamento automático de nós
Para ativar a criação automática de pool de nós em todo o cluster, ative o recurso provisionamento automático de nós usando a API Google Kubernetes Engine. Com o provisionamento automático de nós, o GKE cria pools de nós conforme necessário para qualquer carga de trabalho no cluster com base nas especificações de pod ou nas configurações de ComputeClass. O GKE não gerencia nenhum pool de nós atual no cluster, mas é possível marcar pools de nós individuais como provisionados automaticamente depois de ativar o provisionamento automático de nós para o cluster.
Ative o provisionamento automático de nós em situações como as seguintes:
- Você quer que o GKE crie automaticamente pools de nós em um cluster que executa uma versão do GKE anterior a 1.33.3-gke.1136000.
Você quer definir manualmente os limites de recursos em todo o cluster. Em versões do GKE anteriores a 1.33.3-gke.1136000, é necessário definir limites de recursos em todo o cluster, mesmo que você use ComputeClasses.
Você quer usar recursos ou configurações específicos que não são compatíveis com ComputeClasses.
Você quer definir valores padrão de configuração de nós para todo o cluster.
Depois de ativar o provisionamento automático de nós, é possível configurar valores padrão para várias configurações de nós usando a Google Cloud CLI ou um arquivo de configuração YAML.
Limites de recursos no nível do cluster com provisionamento automático de nós
Ao ativar o provisionamento automático de nós para um cluster inteiro, também é necessário configurar limites para recursos como CPU, memória, GPUs e TPUs no cluster. Esses limites se aplicam à soma de toda a capacidade de recursos no cluster, incluindo pools de nós e ComputeClasses criados manualmente. O GKE não cria novos nós ou pools de nós se a operação exceder um desses limites de recursos.
Esses limites de recursos no nível do cluster só são necessários se você ativar o provisionamento automático de nós no cluster. Em clusters que atendem aos seguintes requisitos, é possível usar a criação automática de pool de nós em ComputeClasses sem ativar o provisionamento automático de nós:
- Use o GKE versão 1.33.3-gke.1136000 ou mais recente.
- Estar inscrito no canal de lançamento rápido.
Se o cluster atender a esses requisitos, recomendamos que você use apenas ComputeClasses para configurar pools de nós criados automaticamente.
Configurações padrão para pools de nós criados automaticamente
É possível especificar valores padrão que o GKE aplica aos pools de nós criados automaticamente no nível da carga de trabalho ou do cluster.
- Configurações padrão no nível da carga de trabalho: é possível usar os campos
spec.nodePoolConfig
espec.priorityDefaults
na especificação ComputeClass para definir valores padrão para configurações específicas de nós. Esses valores padrão se aplicam apenas aos pools de nós que o GKE cria para essa ComputeClass. - Configurações padrão no nível do cluster: é possível definir valores padrão para pools de nós criados automaticamente ao configurar o provisionamento automático de nós. Para especificar valores padrão, use a CLI gcloud ou um arquivo de configuração YAML.
Esses métodos de definição de padrões não são mutuamente exclusivos. Se você configurar valores padrão para uma configuração específica em uma ComputeClass e para todo o cluster, o GKE usará o valor da ComputeClass. Se a ComputeClass não especificar um valor para essa configuração, o GKE usará o valor padrão no nível do cluster.
Configurações padrão no nível do cluster com um arquivo de configuração
Ao ativar o provisionamento automático de nós, é possível usar um arquivo de configuração YAML para especificar configurações padrão em todo o cluster para pools de nós criados automaticamente. É possível especificar várias configurações em um único arquivo de configuração. Algumas configurações avançadas (como as de correção automática) só podem ser especificadas com um arquivo de configuração.
O exemplo de arquivo de configuração a seguir ativa o reparo e upgrade automáticos de nós para qualquer novo pool de nós criado automaticamente:
management: autoRepair: true autoUpgrade: true
O exemplo de arquivo de configuração a seguir define os limites de recursos em todo o cluster para o provisionamento automático de nós e configura várias definições padrão:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-t4' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
Esse arquivo de configuração define os seguintes valores padrão:
- Ativa o reparo e o upgrade automáticos de nós para qualquer novo pool de nós criado automaticamente.
- Ativa a Inicialização segura e o monitoramento de integridade para todos os novos pools de nós criados automaticamente.
- Define o tamanho do disco de inicialização como 100 GiB para qualquer novo pool de nós criado automaticamente.
Depois de aplicar o arquivo de configuração ao cluster, o GKE usa as configurações no arquivo apenas para novos pools de nós criados automaticamente no cluster. As configurações novas ou modificadas especificadas no arquivo não se aplicam aos pools de nós atuais criados pelo GKE no cluster. Se você atualizar um valor definido anteriormente para o cluster, o GKE usará o novo valor para todos os novos pools de nós. Por exemplo, se você definiu anteriormente a série de máquinas padrão como N2 e atualizou o valor para N4 no arquivo de configuração, todos os novos pools de nós usarão tipos de máquina N4.
Para mais informações sobre como usar o arquivo de configuração no nível do cluster, consulte Configurar definições com um arquivo de configuração de provisionamento automático de nós.
Casos de uso da criação automática de pool de nós
As seções a seguir descrevem alguns casos de uso comuns e hardware compatível para a criação automática de pool de nós. Para mais informações sobre outros casos de uso e configurações compatíveis, consulte a documentação do seu caso de uso específico.
Seleção de série ou tipo de máquina
É possível selecionar uma série ou um tipo de máquina do Compute Engine para o GKE usar em pools de nós criados automaticamente de uma das seguintes maneiras:
- ComputeClasses: use as regras de prioridade
machineFamily
oumachineType
. - Especificações do pod: para uma série de máquinas, use um seletor de nós para o
rótulo do nó
cloud.google.com/machine-family
. Para um tipo de máquina, use os rótulos de nócloud.google.com/machine-family
enode.kubernetes.io/instance-type
. Para mais informações, consulte Selecionar uma série ou um tipo de máquina.
Se você não selecionar explicitamente uma máquina, o GKE usará a série de máquinas E2 ou um tipo de máquina compatível com o hardware solicitado pela sua carga de trabalho. Por exemplo, o GKE usa tipos de máquinas com GPU para GPUs e máquinas especializadas para recursos de TPU.
Ao solicitar uma série ou um tipo de máquina, verifique se outros seletores de nós e solicitações de recursos do pod são compatíveis com a máquina especificada. Por exemplo, não é possível solicitar uma GPU e a série de máquinas N2 ao mesmo tempo.
Série de máquinas compatível
É possível solicitar explicitamente qualquer série ou tipo de máquina do Compute Engine compatível em uma ComputeClass ou carga de trabalho. A criação automática de pool de nós é compatível com as seguintes séries de máquinas apenas em versões específicas do GKE:
- Série de máquinas Z3: versão 1.29 e mais recentes.
- Série de máquinas C4:
- 1.28.15-gke.1159000 e mais recente.
- 1.29.10-gke.1227000 e mais recente.
- 1.30.3-gke.1225000 e mais recente.
- Série de máquinas C4A:
- 1.28.15-gke.1344000 e mais recente.
- 1.29.11-gke.1012000 e mais recente.
- 1.30.7-gke.1136000 e mais recente.
- 1.31.3-gke.1056000 e mais recente.
- Série de máquinas C4D: 1.32.3-gke.1717000 e mais recente.
- Série de máquinas N4: 1.29.3 e versões mais recentes.
Outras famílias de máquinas são compatíveis com todas as versões do GKE.
Seleção de GPU
É possível solicitar GPUs para pools de nós criados automaticamente de uma das seguintes maneiras:
- ComputeClasses:
- Use a regra de prioridade
gpu
para configurar as GPUs. - Solicite recursos de GPU nos pods.
- Use a regra de prioridade
- Especificações do pod:
- Configure limites de GPU em todo o cluster para o provisionamento automático de nós.
- Use seletores de nós para configurar as GPUs.
- Solicite recursos de GPU nos pods.
O GKE seleciona um tipo de máquina com GPU grande o suficiente para oferecer suporte ao número de GPUs. O número de GPUs selecionadas afeta a capacidade de CPU e memória dos nós.
Seleção da Cloud TPU
É possível solicitar recursos do Cloud TPU para pools de nós criados automaticamente de uma das seguintes maneiras:
- ComputeClasses: use a
regra de prioridade
tpu
para configurar TPUs. Em seguida, solicite o mesmo número de recursos de TPU nos Pods. Para mais informações, consulte Provisionar TPUs usando classes de computação personalizadas. - Especificações do pod: configure os limites de TPU em todo o cluster. Em seguida, use seletores de nó para configurar as TPUs e solicitar recursos de TPU nos pods. Para mais informações, consulte Como configurar Cloud TPUs.
Os pools de nós de fração de TPU de host único e os pools de nós de fração de TPU de vários hosts são compatíveis com escalonamento automático e criação automática de pool de nós. Para a criação automática de pool de nós, o GKE cria pools de nós de fração de TPU de host único ou de vários hosts com uma versão e topologia de TPU que atendem aos requisitos das cargas de trabalho pendentes.
Requisitos de versão do GKE para a Cloud TPU
A criação automática de pools de nós é compatível com as seguintes Cloud TPUs apenas em versões específicas do GKE:
- Cloud TPU v5p:
- 1.28.7-gke.1020000 e mais recente.
- 1.29.2-gke.1035000 e mais recente.
- TPU Trillium: 1.31.1-gke.1146000 e mais recente.
Outros tipos de Cloud TPU são compatíveis com todas as versões do GKE.
Escalonamento automático do pool de nós da Cloud TPU
O GKE escalona verticalmente pools de nós da Cloud TPU criados automaticamente ou manualmente que usam o escalonador automático de cluster de uma das seguintes maneiras:
- Pool de nós da fração de TPU de host único: o GKE adiciona ou remove nós da TPU no pool de nós atual. O pool de nós pode conter qualquer número de nós da TPU entre zero e o tamanho máximo dele, conforme determinado pelas flags de escalonamento automático
--max-nodes
e--total-max-nodes
. Todos os nós da TPU no pool de nós têm o mesmo tipo de máquina e topologia. Para mais informações sobre como criar um pool de nós de fração de TPU de host único, consulte Criar um pool de nós. - Pool de nós de fração de TPU de vários hosts: o GKE escalona atomicamente
o pool de nós de zero para o número de nós necessários para satisfazer a topologia
da TPU. Por exemplo, com um pool de nós de TPU que tem o tipo de máquina
ct5lp-hightpu-4t
e uma topologia de16x16
, o pool de nós sempre tem 64 nós ou zero nós. O GKE reduz a escala do pool de nós se não houver cargas de trabalho de TPU nele. Para reduzir o escalonamento do pool de nós, o GKE remove todos os pods programados e todos os nós no pool. Para mais informações sobre como criar um pool de nós de fração de TPU de vários hosts, consulte Criar um pool de nós.
Configuração do pool de nós da Cloud TPU
O GKE usa a configuração no seu pod ou ComputeClass para
determinar a configuração dos nós de TPU. O manifesto a seguir é um exemplo de especificação de implantação que solicita TPUs na especificação do pod. Se a configuração de provisionamento automático de nós no nível do cluster estiver ativada,
esse Deployment vai acionar a criação automática do pool de nós. Ao criar este exemplo de
implantação, o GKE cria um pool de nós que contém uma fração de TPU v4
com uma topologia 2x2x2 e duas máquinas ct4p-hightpu-4t
.
apiVersion: apps/v1
kind: Deployment
metadata:
name: tpu-workload
labels:
app: tpu-workload
spec:
replicas: 2
selector:
matchLabels:
app: nginx-tpu
template:
metadata:
labels:
app: nginx-tpu
spec:
nodeSelector:
cloud.google.com/gke-tpu-accelerator: tpu-v4-podslice
cloud.google.com/gke-tpu-topology: 2x2x2
cloud.google.com/reservation-name: my-reservation
containers:
- name: nginx
image: nginx:1.14.2
resources:
requests:
google.com/tpu: 4
limits:
google.com/tpu: 4
ports:
- containerPort: 80
Neste manifesto, os seguintes campos definem a configuração da TPU:
cloud.google.com/gke-tpu-accelerator
: a versão e o tipo da TPU. Por exemplo, você pode usar qualquer uma das seguintes opções:- TPU v4 com tpu-v4-podslice
- TPU v5e com tpu-v5-lite-podslice.
- TPU v5p com tpu-v5p-slice.
- TPU Trillium (v6e) com tpu-v6e-slice.
cloud.google.com/gke-tpu-topology
: o número e a organização física dos chips de TPU em uma fração de TPU. Para mais informações, consulte Escolher uma topologia.limits.google.com/tpu
: o número de chips de TPU na VM da TPU. A maioria das configurações tem apenas um valor correto. Para mais informações, consulte Como as TPUs no GKE funcionam.cloud.google.com/reservation-name
: o nome da reserva de capacidade a ser usada para receber recursos de TPU. Se omitido, a carga de trabalho não usará uma reserva.
A configuração do pool de nós criado automaticamente depende do tipo e da topologia da TPU, além do número de chips de TPU selecionados. Para prever o tipo, o tamanho e a configuração do pool de nós, faça o seguinte:
- Em Escolher uma topologia, filtre a tabela por Standard para o tipo de TPU especificado, como TPU Trillium ou TPU v5e.
- Use os valores especificados para identificar a configuração do pool de nós, da seguinte forma:
gke-tpu-topology
: encontre a linha na tabela que tem o mesmo valor para Topologia.limits
: na tabela, divida o valor de Número de chips de TPU pelo valor de Número de VMs. Encontre na tabela a linha que tem o mesmo valor resultante do valor especificado.
Por exemplo, considere um cenário em que você solicitou tpu-v6e-slice
(TPU
Trillium) com uma topologia 2x4
. Nesse cenário, você filtra a tabela em Escolher uma topologia para TPU Trillium. Em seguida, identifique a linha que corresponde à configuração especificada, da seguinte forma:
gke-tpu-topology
: a TPU Trillium tem as seguintes configurações para uma topologia 2x4:- Um pool de nós de fração de TPU de host único com oito chips de TPU em uma instância
ct6e-standard-8t
. - Um pool de nós de fração de TPU de vários hosts com oito chips de TPU distribuídos em duas instâncias
ct6e-standard-4t
.
- Um pool de nós de fração de TPU de host único com oito chips de TPU em uma instância
limits
: como a TPU Trillium tem várias opções para a topologia 2x4, o valor especificado no campolimits
depende do tipo de pool de nós que você quer, da seguinte forma:- Pool de nós da fração de TPU de host único: especifique
limits.google.com/tpu: 8
para receber um pool de nós com oito chips de TPU e uma VM. Todos os oito chips estão anexados a essa VM. - Pool de nós de fração da TPU de vários hosts: especifique
limits.google.com/tpu: 4
para ter um pool de nós com oito chips de TPU e duas VMs. Cada VM tem quatro chips.
- Pool de nós da fração de TPU de host único: especifique
Seleção de VM spot
É possível selecionar VMs do Spot para pools de nós criados automaticamente de uma das seguintes maneiras:
- ComputeClasses: use o campo
spot
em uma regra de prioridade. - Especificações do pod: use uma tolerância para o
rótulo do nó
cloud.google.com/gke-spot="true"
com o efeitoNoSchedule
. Adicione um seletor de nós para os rótulos de nóscloud.google.com/gke-spot=true
oucloud.google.com/gke-provisioning=spot
. Como alternativa, é possível selecionar VMs preemptivas usando o rótulo de nócloud.google.com/gke-preemptible
na tolerância e no seletor de nós. No entanto, recomendamos as VMs do Spot.
Configuração de armazenamento temporário
O GKE usa uma parte do disco de inicialização do nó para armazenamento temporário de pods. É possível personalizar o tamanho do disco de inicialização que o GKE usa para nós criados automaticamente de uma das seguintes maneiras:
- ComputeClasses: use os campos
storage.bootDiskSize
estorage.bootDiskType
em uma regra de prioridade. É possível configurar diferentes configurações de disco de inicialização para diferentes ComputeClasses. - Especificações de pod: use os campos
diskSizeGb
ediskType
no arquivo de configuração no nível do cluster. Não é possível controlar o tamanho e o tipo do disco de inicialização para pods individuais usando esse método.
Para mais informações, consulte
Discos de inicialização personalizados.
Se você não modificar explicitamente as configurações do disco de inicialização, o padrão será um volume
pd-balanced
com capacidade de 100 GiB.
O GKE cria um pool de nós somente se o armazenamento temporário alocável de um nó com um disco de inicialização especificado for maior ou igual à solicitação de armazenamento temporário de um pod pendente. Se a solicitação de armazenamento temporário for maior que o armazenamento temporário alocável de um nó, o GKE não vai criar um novo pool de nós, e o pod vai permanecer no estado pendente. O GKE não ajusta dinamicamente os tamanhos dos discos de inicialização com base nas solicitações de armazenamento temporário do pod.
Separação da carga de trabalho
É possível solicitar que pods específicos sejam sempre executados em nós separados de outros pods no cluster. O GKE usa taints de nós para impedir que outras cargas de trabalho sejam executadas nesses nós. É possível configurar a separação de cargas de trabalho em pools de nós criados automaticamente das seguintes maneiras:
- ComputeClasses: os nós que o GKE cria para uma ComputeClass específica só podem executar pods que selecionam essa ComputeClass. Não é necessário modificar as especificações do pod. É possível separar os pods em uma ComputeClass usando afinidade e antiafinidade entre pods.
- Especificações de pod: se você ativar o provisionamento automático de nós para o
cluster, poderá configurar a separação de cargas de trabalho usando campos na
especificação de pod. Durante a criação automática de pool de nós, o GKE
pode criar pools de nós com rótulos e taints se todas as
condições a seguir forem atendidas:
- O pod usa um seletor de nós para solicitar uma chave e um valor de rótulo de nó personalizados. Não é possível usar rótulos de nós do sistema para separação de cargas de trabalho.
- O pod tem uma tolerância para a mesma chave de rótulo do nó.
- O efeito de tolerância é
NoSchedule
,NoExecute
ou não especificado.
Para mais informações sobre como configurar esses campos e sobre limitações, consulte Configurar a separação de cargas de trabalho no GKE.
Limitações
- Todas as limitações do autoescalador de cluster também se aplicam à criação automática de pool de nós.
- Clusters com mais de 200 pools de nós totais podem ter aumento na latência durante o escalonamento automático. Qualquer configuração que acione a criação de um novo pool de nós, como separação de carga de trabalho ou o uso de várias ComputeClasses, aumenta esse número. Para mais informações sobre limites de cluster, consulte limites e práticas recomendadas em "Planejar clusters grandes".
- Todos os limites de recursos definidos para o cluster ao ativar o provisionamento automático de nós também se aplicam aos pools de nós que o GKE cria para ComputeClasses.
- As configurações a seguir não são compatíveis com ComputeClasses:
- Upgrades súbitos ou azul-verde.
- Integridade do nó e inicialização segura.
- Para ativar a criação automática de pool de nós para uma ComputeClass em versões do GKE anteriores a 1.33.3-gke.1136000, também é necessário ativar o provisionamento automático de nós no nível do cluster. Essa limitação não se aplica ao GKE versão 1.33.3-gke.1136000 e posteriores.
Configurações não suportadas
O GKE não cria pools de nós que usam as seguintes configurações:
- GKE Sandbox
- Sistemas operacionais Windows
- Escalonamento automático de PersistentVolumes locais.
- Nós que usam SSDs locais dedicados para armazenamento temporário de pods. No entanto, o GKE pode criar novos pools de nós que usam SSDs locais para armazenamento em blocos brutos.
- Nós que usam filtros alterados para programação personalizada.
- Multissegmentação simultânea (SMT).
- Unidade de monitoramento de desempenho (PMU, na sigla em inglês).
O escalonador automático de cluster pode escalonar nós em pools de nós atuais que usam essas configurações.