O Google Kubernetes Engine (GKE) pode criar e gerir automaticamente node pools nos seus clusters com base na configuração das suas cargas de trabalho. Este documento descreve como funciona a criação automática de pools de nós, os parâmetros de escalabilidade e o comportamento predefinido, e fornece recomendações que podem ajudar a melhorar a escalabilidade. Este documento destina-se aos administradores de clusters que querem reduzir os custos associados à gestão manual da infraestrutura nos respetivos clusters do modo padrão.
Já deve estar familiarizado com os seguintes conceitos:
No modo Autopilot, o GKE cria e gere sempre nós e conjuntos de nós por si com base nas suas cargas de trabalho. Não tem de configurar manualmente a criação automática de conjuntos de nós para clusters do Autopilot nem para cargas de trabalho do Autopilot em clusters padrão. Para mais informações, consulte a vista geral do GKE Autopilot.
O que é a criação automática de node pools?
No GKE, os node pools são grupos lógicos de nós. Cada nó num conjunto de nós tem a mesma configuração que todos os outros nós nesse conjunto de nós. A criação automática de node pools é um mecanismo de escala automática da infraestrutura que permite ao GKE criar novos node pools no seu cluster que cumprem os requisitos das suas cargas de trabalho. O GKE gere estes node pools criados automaticamente, realizando tarefas como atualizar os metadados dos nós, criar e eliminar nós no node pool e eliminar todo o node pool quando já não for necessário. A criação automática de node pools é uma extensão do autoscaler de clusters do GKE, que dimensiona automaticamente os nós em node pools individuais.
A criação automática de node pools foi concebida para permitir que o GKE reduza automaticamente a escala e remova node pools vazios do seu cluster. Não pode definir um número mínimo de nós que cada conjunto de nós criado automaticamente tem de ter, porque um número mínimo superior a zero impediria a remoção de conjuntos de nós vazios. Se o seu exemplo de utilização exigir um número mínimo de nós para serem sempre executados no seu cluster, crie manualmente um conjunto de nós com o dimensionamento automático ativado.
Como funciona
A criação automática de node pools expande o redimensionador automático de clusters do GKE para permitir que o GKE aprovisione novos node pools que cumpram os requisitos de hardware e os pedidos de recursos dos pods pendentes. Pode definir os requisitos de hardware das seguintes formas:
- Use ComputeClasses, que seleciona em vários pods através de um seletor de nós. Recomendamos este método porque pode definir centralmente configurações de nós comuns que várias cargas de trabalho podem usar.
- Use seletores de nós ou afinidade de nós para pedir etiquetas de nós do GKE específicas nas especificações de pods.
O GKE configura novos conjuntos de nós com base em parâmetros como os seguintes:
- CPU, memória e armazenamento efémero pedidos de recursos nos seus pods e contentores, incluindo quaisquer pods geridos por DaemonSets.
- Pedidos de GPU e TPU nas especificações de pods ou nas ComputeClasses.
- Requisitos de hardware, como tipos de máquinas ou tipos de discos de arranque, nas especificações de Pods pendentes ou em ComputeClasses.
- Tolerations nas especificações dos pods pendentes que têm seletores de nós correspondentes.
O GKE configura a capacidade de recursos de cada nó num conjunto de nós criado automaticamente para ser superior ou igual aos pedidos de recursos dos seus pods pendentes. Tem de garantir que os pedidos de recursos são suficientemente grandes para que o Pod funcione como esperado. Se os pedidos de pods forem demasiado baixos, os pods não são executados conforme esperado depois de o GKE os agendar em nós criados automaticamente.
Configuração dos metadados do nó
O GKE também configura metadados de nós (como etiquetas, anotações e node taints) com base nos requisitos da carga de trabalho, como nos seguintes exemplos:
- Se pedir a série de máquinas N2, o GKE adiciona a etiqueta de nó
cloud.google.com/machine-family: n2
a cada um dos nós. - Se selecionar uma ComputeClass no seu pod, o GKE adiciona uma etiqueta de nó com a chave
cloud.google.com/compute-class
definida como o nome dessa ComputeClass. - Se o seu Pod tiver uma tolerância e um seletor de nós para a mesma etiqueta de nó, o GKE adiciona restrições de nós para essas tolerâncias aos nós criados automaticamente.
Eliminação de node pools criados automaticamente
A criação automática de node pools permite que o redimensionador automático do cluster crie novos node pools e nós para executar os pods pendentes recebidos. Se o número de pods num node pool criado automaticamente diminuir, o redimensionador automático de cluster reduz gradualmente a escala do node pool. Quando possível, o GKE esvazia os nós pouco usados no conjunto de nós, consolida os pods noutros nós e remove os nós vazios.
Se o número de nós num conjunto de nós criado automaticamente for zero, o GKE elimina esse conjunto de nós. O GKE não elimina os node pools que exclui da criação automática de node pools, como os node pools criados manualmente. Para mais informações sobre como o redimensionador automático de clusters reduz os conjuntos de nós, consulte o artigo Como funciona o redimensionador automático de clusters.
Preferências de escalabilidade do GKE
As seguintes preferências aplicam-se quando o GKE redimensiona automaticamente a sua infraestrutura:
- Reduza os recursos de computação desperdiçados: o GKE usa a capacidade de recursos dos conjuntos de nós criados automaticamente existentes no seu cluster para determinar o tipo de máquina a usar para novos conjuntos de nós. À medida que o tamanho do cluster aumenta, o GKE prefere usar tipos de máquinas maiores para novos conjuntos de nós, para que mais dos seus pods possam ser executados em cada nó no conjunto de nós.
- Otimize a escalabilidade e a latência: o GKE dá sempre prioridade ao aumento da escala dos conjuntos de nós compatíveis existentes em vez de criar novos conjuntos de nós. A força desta preferência aumenta à medida que o número de pools de nós distintos no seu cluster aumenta. Quando o número de pools de nós distintos se aproxima dos limites suportados para uma latência e uma escalabilidade ideais, o GKE desprioriza a criação de novos pools de nós.
Estas prioridades ajudam a garantir que os seus clusters têm uma utilização eficiente dos recursos de computação em grande escala, como nos seguintes exemplos de cenários:
- Em clusters com um pequeno número de conjuntos de nós e menor utilização de recursos, o GKE cria novos conjuntos de nós com maior frequência e usa tipos de máquinas mais pequenos para esses conjuntos de nós.
- Em clusters com um grande número de conjuntos de nós, a utilização de recursos é elevada. O GKE cria novos conjuntos de nós com menos frequência e usa tipos de máquinas maiores para esses conjuntos de nós, para que o agendamento de pods possa continuar, ao mesmo tempo que abranda o progresso em direção à escalabilidade do cluster e aos limites de latência.
Pode controlar manualmente o tamanho mínimo das instâncias que o GKE usa para os seus conjuntos de nós criados automaticamente através de uma ComputeClass que tenha o campo priorities.machineFamily
e o campo priorities.minCores
ou o campo priorities.minMemoryGb
.
Métodos de ativação para a criação automática de node pools
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 da forma como configura o cluster.
Métodos de ativação | |
---|---|
Ao nível da carga de trabalho (recomendado) | Na versão 1.33.3-gke.1136000 e posteriores do GKE, use ComputeClasses para ativar a criação automática de pools de nós sem usar o aprovisionamento automático de nós ao nível do cluster. O GKE cria novos conjuntos de nós apenas para cargas de trabalho que selecionam classes de computação específicas com a criação automática ativada. As cargas de trabalho existentes no cluster não são afetadas. Mesmo nas versões do GKE anteriores a 1.33.3-gke.1136000, as ComputeClasses são a forma recomendada de pedir e configurar a infraestrutura para as suas cargas de trabalho. As ComputeClasses oferecem capacidades únicas e dão-lhe uma forma flexível de otimizar o dimensionamento no seu cluster. Para mais informações, consulte o artigo Acerca das ComputeClasses personalizadas. |
Ao nível do cluster | Ative o aprovisionamento automático de nós para todo o cluster. Tem de definir limites para recursos como a CPU e a memória no cluster. Estes limites aplicam-se a todo o cluster. A configuração ao nível do cluster é necessária para ativar a criação automática de node pools em versões do GKE anteriores a 1.33.3-gke.1136000. O GKE pode criar novos conjuntos de nós para qualquer carga de trabalho pendente no cluster através de ComputeClasses ou seletores nas especificações do pod. |
Estes métodos de configuração não são mutuamente exclusivos. Pode usar ComputeClasses para criar automaticamente pools de nós em clusters que usam o aprovisionamento automático de nós. Se usar ambos os métodos para ativar a criação automática de pools de nós num cluster, o GKE usa a seguinte ordem de preferência para encontrar o valor de uma definição de configuração a usar para um pool de nós:
- Especificação ComputeClass ou Pod: se especificar uma definição (como um tipo de máquina) numa ComputeClass ou numa especificação Pod, o GKE usa essa definição.
- Predefinição de aprovisionamento automático de nós ao nível do cluster: se uma definição não for especificada numa ComputeClass ou numa especificação de pod, o GKE verifica se definiu um valor predefinido para o aprovisionamento automático de nós no cluster. Se existir um valor predefinido ao nível do cluster, o GKE usa esse valor.
- Predefinição ao nível do cluster: se uma definição não for especificada em ComputeClasses, nas especificações de pods ou como um valor predefinido para o aprovisionamento automático de nós ao nível do cluster, o GKE usa o valor predefinido que o Google Cloud define para o cluster.
Por exemplo, considere um cenário em que o GKE tenta encontrar um tipo de máquina para usar num conjunto de nós criado automaticamente. A ordem de preferência anterior aplica-se da seguinte forma:
- 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 especificar um tipo de máquina, o GKE verifica se definiu um tipo de máquina predefinido para o aprovisionamento automático de nós no cluster.
- Se não tiver definido um tipo de máquina predefinido para o aprovisionamento automático de nós, o GKE usa o tipo de máquina predefinido do cluster.
Recomendamos que use apenas o método de ativação ComputeClass na maioria das situações. As secções seguintes fornecem detalhes sobre cada um destes métodos de configuração, incluindo limitações e considerações.
Ativação ao nível da carga de trabalho com ComputeClasses
Pode ativar a criação automática de pools de nós para qualquer ComputeClass no seu cluster através de um dos seguintes campos na especificação ComputeClass:
nodePoolAutoCreation
: permita que o GKE crie automaticamente pools de nós conforme necessário. Ainda pode interagir com os conjuntos de nós. O GKE implementa apenas as definições ou as restrições que configurar.autopilot
: execute as cargas de trabalho que selecionam esta ComputeClass no modo Autopilot. Tal como num cluster do Autopilot, o GKE gere totalmente os nós por si e implementa várias restrições e definições do Autopilot. Se usar o campoautopilot
, pode ignorar este documento. Para mais informações, consulte o artigo Acerca das cargas de trabalho do modo de piloto automático no Standard.
Em clusters que cumprem os seguintes requisitos, pode usar estes campos numa ComputeClass sem ativar o aprovisionamento automático de nós ao nível do cluster:
- Use a versão 1.33.3-gke.1136000 e posteriores do GKE.
- Estiverem inscritos no canal de lançamento rápido.
Se configurar a criação automática de pools de nós numa ComputeClass sem ativar o aprovisionamento automático de nós para o cluster, o GKE cria novos pools de nós apenas para cargas de trabalho que usam a ComputeClass. Outras cargas de trabalho não são afetadas.
O seguinte exemplo de manifesto ComputeClass permite a criação automática de pools de nós para qualquer pod que use o 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 ao nível do cluster com o aprovisionamento automático de nós
Para ativar a criação automática de node pools para todo o cluster, ative a funcionalidade de aprovisionamento automático de nós para o cluster através da API Google Kubernetes Engine. O aprovisionamento automático de nós permite que o GKE crie novos node pools conforme necessário para qualquer carga de trabalho no cluster com base nas especificações de pods ou nas configurações de ComputeClass. O GKE não gere nenhum conjunto de nós existente no cluster, mas pode marcar conjuntos de nós individuais como aprovisionados automaticamente depois de ativar o aprovisionamento automático de nós para o cluster.
Ative o aprovisionamento automático de nós em situações como as seguintes:
- Quer que o GKE crie automaticamente pools de nós num cluster que execute uma versão do GKE anterior a 1.33.3-gke.1136000.
Quiser definir manualmente limites de recursos ao nível do cluster. Nas versões do GKE anteriores a 1.33.3-gke.1136000, tem de definir limites de recursos ao nível do cluster, mesmo que use ComputeClasses.
controlar a utilização de recursos.Quer usar funcionalidades ou configurações específicas que não são suportadas por ComputeClasses.
Quiser definir valores de configuração de nós predefinidos para todo o cluster.
Depois de ativar o aprovisionamento automático de nós, pode configurar os valores predefinidos para várias definições de nós através da CLI do Google Cloud ou de um ficheiro de configuração YAML.
Limites de recursos ao nível do cluster com o aprovisionamento automático de nós
Quando ativa o aprovisionamento automático de nós para um cluster inteiro, também tem de configurar limites para recursos como CPU, memória, GPUs e TPUs no cluster. Estes limites aplicam-se à soma de toda a capacidade de recursos no cluster, incluindo os conjuntos de nós criados manualmente e as ComputeClasses. O GKE não cria novos nós nem conjuntos de nós se a operação exceder um destes limites de recursos.
Estes limites de recursos ao nível do cluster só são necessários se ativar o aprovisionamento automático de nós no cluster. Em clusters que cumpram os seguintes requisitos, pode usar a criação automática de pools de nós em ComputeClasses sem ativar o aprovisionamento automático de nós:
- Use a versão 1.33.3-gke.1136000 e posteriores do GKE.
- Estiverem inscritos no canal de lançamento rápido.
Se o seu cluster cumprir estes requisitos, recomendamos que use apenas ComputeClasses para configurar pools de nós criados automaticamente.
Predefinições para node pools criados automaticamente
Pode especificar valores predefinidos que o GKE aplica aos conjuntos de nós criados automaticamente ao nível da carga de trabalho ou do cluster.
- Definições predefinidas ao nível da carga de trabalho: pode usar o campo
spec.nodePoolConfig
e o campospec.priorityDefaults
no especificação ComputeClass para definir valores predefinidos para definições de nós específicas. Estes valores predefinidos aplicam-se apenas aos conjuntos de nós que o GKE cria para essa ComputeClass. - Predefinições ao nível do cluster: pode definir valores predefinidos para os conjuntos de nós criados automaticamente quando configura o aprovisionamento automático de nós. Para especificar valores predefinidos, use a CLI gcloud ou um ficheiro de configuração YAML.
Estes métodos de predefinição não são mutuamente exclusivos. Se configurar valores predefinidos para uma definição específica numa ComputeClass e para todo o cluster, o GKE usa o valor da ComputeClass. Se o ComputeClass não especificar um valor para essa definição, o GKE usa o valor predefinido ao nível do cluster.
Predefinições ao nível do cluster com um ficheiro de configuração
Quando ativa o aprovisionamento automático de nós, pode usar um ficheiro de configuração YAML para especificar as predefinições ao nível do cluster para os conjuntos de nós criados automaticamente. Pode especificar várias definições num único ficheiro de configuração. Algumas configurações avançadas (como as definições de reparação automática) só podem ser especificadas através de um ficheiro de configuração.
O ficheiro de configuração de exemplo seguinte ativa a reparação automática e a atualização automática de nós para todos os novos conjuntos de nós criados automaticamente:
management: autoRepair: true autoUpgrade: true
O ficheiro de configuração de exemplo seguinte define os limites de recursos ao nível do cluster para a administração de contas automática de nós e configura várias predefinições:
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
Este ficheiro de configuração define os seguintes valores predefinidos:
- Ativa a reparação automática e a atualização automática de nós para todos os novos conjuntos de nós criados automaticamente.
- Ativa o Arranque seguro e a monitorização da integridade para todos os novos conjuntos de nós criados automaticamente.
- Define o tamanho do disco de arranque como 100 GiB para todos os novos conjuntos de nós criados automaticamente.
Depois de aplicar o ficheiro de configuração ao cluster, o GKE usa as definições no ficheiro apenas para novos conjuntos de nós criados automaticamente no cluster. As definições novas ou modificadas que especificar no ficheiro não se aplicam aos conjuntos de nós existentes que o GKE criou no cluster. Se atualizar um valor que foi definido anteriormente para o cluster, o GKE usa o novo valor para todos os novos conjuntos de nós. Por exemplo, se tiver definido anteriormente a série de máquinas predefinida como N2 e atualizar o valor para N4 no ficheiro de configuração, todos os novos conjuntos de nós usam tipos de máquinas N4.
Para mais informações sobre como usar o ficheiro de configuração ao nível do cluster, consulte o artigo Configure definições com um ficheiro de configuração de aprovisionamento automático de nós.
Exemplos de utilização da criação automática de node pools
As secções seguintes descrevem alguns exemplos de utilização populares e hardware suportado para a criação automática de conjuntos de nós. Para mais informações sobre exemplos de utilização adicionais e configurações suportadas, consulte a documentação do seu exemplo de utilização específico.
Seleção do tipo de máquina ou da série de máquinas
Pode selecionar uma série de máquinas ou um tipo de máquina do Compute Engine para o GKE usar para pools de nós criados automaticamente de uma das seguintes formas:
- ComputeClasses: use o
machineFamily
ou asmachineType
regras de prioridade. - Especificações do pod: para uma série de máquinas, use um seletor de nós para a etiqueta do nó
cloud.google.com/machine-family
. Para um tipo de máquina, use as etiquetas de nócloud.google.com/machine-family
enode.kubernetes.io/instance-type
. Para mais informações, consulte o artigo Selecione uma série de máquinas ou um tipo de máquina.
Se não selecionar explicitamente uma máquina, o GKE usa a série de máquinas E2 ou um tipo de máquina compatível com o hardware que a sua carga de trabalho pede. Por exemplo, o GKE usa tipos de máquinas com GPU para GPUs e máquinas especializadas para recursos de TPU.
Quando pedir uma série de máquinas ou um tipo de máquina, certifique-se de que outros seletores de nós e os pedidos de recursos de pods são compatíveis com a máquina especificada. Por exemplo, não pode pedir uma GPU e a série de máquinas N2 ao mesmo tempo.
Séries de máquinas suportadas
Pode pedir explicitamente qualquer tipo de máquina ou série de máquinas do Compute Engine suportado numa ComputeClass ou numa carga de trabalho. A criação automática de pools de nós suporta as seguintes séries de máquinas apenas em versões específicas do GKE:
- Série de máquinas Z3: 1.29 e posterior.
- Série de máquinas C4:
- 1.28.15-gke.1159000 e posteriores.
- 1.29.10-gke.1227000 e posteriores.
- 1.30.3-gke.1225000 e posteriores.
- C4A machine series:
- 1.28.15-gke.1344000 e posteriores.
- 1.29.11-gke.1012000 e posteriores.
- 1.30.7-gke.1136000 e posteriores.
- 1.31.3-gke.1056000 e posteriores.
- Série de máquinas C4D: 1.32.3-gke.1717000 e posteriores.
- Série de máquinas N4: 1.29.3 e posteriores.
As outras séries de máquinas são suportadas em todas as versões do GKE.
Seleção de GPU
Pode pedir GPUs para pools de nós criados automaticamente de uma das seguintes formas:
- ComputeClasses:
- Use a regra de prioridade
gpu
para configurar as GPUs. - Peça recursos de GPU nos pods.
- Use a regra de prioridade
- Especificações do agrupamento:
- Configure limites de GPU ao nível do cluster para a administração de contas automática de nós.
- Use seletores de nós para configurar as GPUs.
- Peça recursos de GPU nos pods.
O GKE seleciona um tipo de máquina de GPU suficientemente grande para suportar o número de GPUs. O número de GPUs que selecionar afeta a capacidade de CPU e memória dos nós.
Seleção do Cloud TPU
Pode pedir recursos da Cloud TPU para conjuntos de nós criados automaticamente de uma das seguintes formas:
- ComputeClasses: use a
tpu
regra de prioridade para configurar as TPUs. Em seguida, peça o mesmo número de recursos de TPU nos pods. Para mais informações, consulte o artigo Aprovisione TPUs através de classes de computação personalizadas. - Especificações do pod: configure limites de TPU ao nível do cluster. Em seguida, use seletores de nós para configurar as TPUs e pedir recursos de TPU nos pods. Para mais informações, consulte o artigo Configurar Cloud TPUs.
Os node pools de fatias de TPU de anfitrião único e os node pools de fatias de TPU de vários anfitriões suportam o dimensionamento automático e a criação automática de node pools. Para a criação automática de node pools, o GKE cria node pools de fatias de TPU de anfitrião único ou vários anfitriões com uma versão e uma topologia de TPU que cumprem os requisitos das cargas de trabalho pendentes.
Requisitos de versão do GKE para o Cloud TPU
A criação automática de conjuntos de nós só suporta os seguintes TPUs na nuvem em versões específicas do GKE:
- Cloud TPU v5p:
- 1.28.7-gke.1020000 e posteriores.
- 1.29.2-gke.1035000 e posteriores.
- TPU Trillium: 1.31.1-gke.1146000 e posterior.
Outros tipos de Cloud TPU são suportados em todas as versões do GKE.
Escala automática do node pool do Cloud TPU
O GKE dimensiona os node pools da TPU do Google Cloud criados automaticamente ou manualmente que usam o dimensionador automático de clusters de uma das seguintes formas:
- Pool de nós de fatia de TPU de host único: o GKE adiciona ou remove nós da TPU no pool de nós existente. O conjunto de nós pode conter qualquer número de nós de TPU entre zero e o tamanho máximo do conjunto de nós, conforme determinado pelos flags de escalabilidade automática
--max-nodes
e--total-max-nodes
. Todos os nós da TPU no conjunto de nós têm o mesmo tipo de máquina e topologia. Para mais informações sobre como criar um node pool de fatia de TPU de host único, consulte o artigo Crie um node pool. - Pool de nós de fatia de TPU com vários anfitriões: o GKE aumenta automaticamente o número de nós do 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 conjunto de nós da TPU que tenha o tipo de máquina
ct5lp-hightpu-4t
e uma topologia de16x16
, o conjunto de nós tem sempre 64 nós ou zero nós. O GKE reduz a escala do conjunto de nós se não existirem cargas de trabalho de TPU no conjunto de nós. Para reduzir a escala do node pool, o GKE despeja todos os pods agendados e remove todos os nós no node pool. Para mais informações sobre como criar um node pool de fatia de TPU de vários anfitriões, consulte o artigo Crie um node pool.
Configuração do node pool do Cloud TPU
O GKE usa a configuração no seu pod ou ComputeClass para determinar a configuração dos seus nós de TPU. O manifesto seguinte é um exemplo de uma especificação de implementação que pede TPUs na especificação do pod. Se a definição de aprovisionamento automático de nós ao nível do cluster estiver ativada,
esta implementação aciona a criação automática do conjunto de nós. Quando cria esta implementação de exemplo, o GKE cria um conjunto de nós que contém uma fatia de TPU v4 com uma topologia de 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, 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 disposição física dos chips da TPU numa fatia da TPU. Para mais informações, consulte o artigo Escolha uma topologia.limits.google.com/tpu
: o número de chips da TPU na VM da TPU. A maioria das configurações tem apenas um valor correto. Para mais informações, consulte o artigo Como funcionam as TPUs no GKE.cloud.google.com/reservation-name
: o nome da reserva de capacidade a usar para obter recursos de TPU. Se for omitido, a carga de trabalho não usa nenhuma reserva.
A configuração do conjunto de nós criado automaticamente depende do tipo de TPU, da topologia de TPU e do número de chips de TPU que selecionar. Para prever o tipo, o tamanho e a configuração do seu conjunto de nós, faça o seguinte:
- Em Escolha uma topologia, filtre a tabela por Padrão para o tipo de TPU especificado, como TPU Trillium ou TPU v5e.
- Use os valores que especificou para identificar a configuração do conjunto 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 a linha na tabela que tem o mesmo valor resultante que o valor especificado.
Por exemplo, considere um cenário em que pediu tpu-v6e-slice
(TPU
Trillium) com uma topologia 2x4
. Neste cenário, filtra a tabela em
Escolha 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 de 2x4:- Um conjunto de nós de fatia de TPU de anfitrião único que tem oito chips de TPU numa instância
ct6e-standard-8t
. - Um conjunto de nós de fatia de TPU multi-anfitrião com oito chips de TPU distribuídos por duas instâncias
ct6e-standard-4t
.
- Um conjunto de nós de fatia de TPU de anfitrião único que tem oito chips de TPU numa instância
limits
: uma vez que a TPU Trillium tem várias opções para a topologia 2x4, o valor que especifica no campolimits
depende do tipo de pool de nós que quer, da seguinte forma:- Pool de nós de fatia de TPU de host único: especifique
limits.google.com/tpu: 8
para ter 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 fatia de TPU com vários anfitriões: especifique
limits.google.com/tpu: 4
para obter um pool de nós com oito chips de TPU e duas VMs. Cada MV tem 4 chips.
- Pool de nós de fatia de TPU de host único: especifique
Seleção de VMs do Spot
Pode selecionar VMs de capacidade instantânea para pools de nós criados automaticamente de uma das seguintes formas:
- ComputeClasses: use o campo
spot
numa regra de prioridade. - Especificações do pod: use uma tolerância para a etiqueta do nó
cloud.google.com/gke-spot="true"
com o efeitoNoSchedule
. Adicione um seletor de nós para as etiquetas de nóscloud.google.com/gke-spot=true
oucloud.google.com/gke-provisioning=spot
. Em alternativa, pode selecionar VMs preemptivas usando a etiqueta de nócloud.google.com/gke-preemptible
na tolerância e no seletor de nós. No entanto, recomendamos vivamente que use VMs de capacidade instantânea.
Configuração do armazenamento temporário
O GKE usa uma parte do disco de arranque do nó para o armazenamento efémero do pod. Pode personalizar o tamanho do disco de arranque que o GKE usa para nós criados automaticamente de uma das seguintes formas:
- ComputeClasses: use os campos
storage.bootDiskSize
estorage.bootDiskType
numa regra de prioridade. Pode configurar diferentes definições de disco de arranque para diferentes ComputeClasses. - Especificações do pod: use os campos
diskSizeGb
ediskType
no ficheiro de configuração ao nível do cluster. Não pode controlar o tamanho e o tipo do disco de arranque para Pods individuais através deste método.
Para mais informações, consulte o artigo
Discos de arranque personalizados.
Se não modificar explicitamente as definições do disco de arranque, a predefinição é um volume de pd-balanced
com uma capacidade de 100 GiB.
O GKE cria um novo conjunto de nós apenas se o armazenamento efémero atribuível de um nó com um disco de arranque especificado for superior ou igual ao pedido de armazenamento efémero de um pod pendente. Se o pedido de armazenamento efémero for superior ao armazenamento efémero atribuível de um nó, o GKE não cria um novo conjunto de nós e o pod permanece no estado pendente. O GKE não ajusta dinamicamente os tamanhos dos discos de arranque com base nos seus pedidos de armazenamento efémero de pods.
Separação de cargas de trabalho
Pode pedir que Pods específicos sejam sempre executados em nós separados de outros Pods no cluster. O GKE usa contaminações de nós para impedir que outras cargas de trabalho sejam executadas nesses nós. Pode configurar a separação de cargas de trabalho em pools de nós criados automaticamente das seguintes formas:
- ComputeClasses: os nós que o GKE cria para uma ComputeClass específica só podem executar pods que selecionem essa ComputeClass. Não tem de modificar as especificações do seu POD. Pode separar os pods numa ComputeClass usando a afinidade e a antiafinidade entre pods.
- Especificações do pod: se ativar a Administração de contas automática de nós para o cluster, pode configurar a separação de cargas de trabalho usando campos na especificação do pod. Durante a criação automática de node pools, o GKE
pode criar node pools com etiquetas e taints se todas as seguintes
condições forem cumpridas:
- O pod usa um seletor de nós para pedir uma chave de etiqueta de nó personalizada e um valor. Não pode usar etiquetas de nós do sistema para a separação de cargas de trabalho.
- O pod tem uma tolerância para a mesma chave de etiqueta do nó.
- O efeito de tolerância é
NoSchedule
,NoExecute
ou não está especificado.
Para mais informações sobre a configuração destes campos e limitações, consulte o artigo Configure a separação de cargas de trabalho no GKE.
Limitações
- Todas as limitações do escalador automático de clusters também se aplicam à criação automática de conjuntos de nós.
- Os clusters com mais de 200 conjuntos de nós totais podem ter uma latência aumentada durante a capacidade de escala automática. Qualquer configuração que acione a criação de um novo conjunto de nós, como a separação de cargas de trabalho ou a utilização de várias ComputeClasses, aumenta este número. Para mais informações sobre os limites de clusters, consulte os limites e as práticas recomendadas em "Planeamento de clusters grandes".
- Todos os limites de recursos que definir para o cluster quando ativar o aprovisionamento automático de nós também se aplicam aos conjuntos de nós que o GKE cria para as ComputeClasses.
- As seguintes definições não são suportadas por ComputeClasses:
- Atualizações de picos ou atualizações azul-verde.
- Integridade do nó e arranque seguro.
- Para ativar a criação automática de node pools para uma ComputeClass em versões do GKE anteriores à 1.33.3-gke.1136000, também tem de ativar o aprovisionamento automático de nós ao nível do cluster. Esta limitação não se aplica na versão 1.33.3-gke.1136000 do GKE e posterior.
Configurações não suportadas
O GKE não cria novos conjuntos de nós que usem as seguintes configurações:
- GKE Sandbox
- Sistemas operativos Windows
- Escala automática de local PersistentVolumes.
- Nós que usam SSDs locais dedicados para o armazenamento efémero de pods. No entanto, o GKE pode criar novos conjuntos de nós que usam SSDs locais para armazenamento de blocos não processados.
- Nós que usam filtros alterados para agendamento personalizado.
- Multiprocessamento simultâneo (SMT).
- Unidade de monitorização do desempenho (PMU).
O escalador automático de clusters pode dimensionar nós em node pools existentes que usam estas configurações.