Nesta página, explicamos como usar o provisionamento automático de nós em clusters padrão do Google Kubernetes Engine (GKE). Você já deve estar familiarizado com o conceito de provisionamento automático de nós.
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
Requisitos
O provisionamento automático de nós está disponível nas seguintes versões do GKE:
- versão 1.11.2-gke.25 e superior para clusters zonais;
- versão 1.12.x e superior para clusters regionais.
- Versão 1.27.6 e posteriores ou 1.28 e posteriores para o Cloud TPU v4 e v5e
- Versão 1.28.7-gke.1020000 ou posterior e 1.29.2-gke.1035000 ou posterior para o Cloud TPU v5p.
Ativar provisionamento automático de nós
É possível ativar o provisionamento automático de nós em um cluster com a gcloud CLI ou o console do Google Cloud.
O provisionamento automático de nós tem as seguintes limitações de recursos:
É preciso planejar com cuidado o intervalo de endereços IP do nó. É possível expandir o intervalo de endereços IP do nó depois de criar um cluster. No entanto, recomendamos não fazer isso porque é necessário atualizar as regras de firewall para incluir o novo intervalo como uma origem. É possível expandir o intervalo de endereços IP do pod usando o CIDR de vários pods distintos com o provisionamento automático de nós.
gcloud
Para ativar o provisionamento automático de nós, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --min-cpu MINIMUM_CPU \ --min-memory MIMIMUM_MEMORY \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --autoprovisioning-scopes=https://www.googleapis.com/auth/logging.write,https://www.googleapis.com/auth/monitoring,https://www.googleapis.com/auth/devstorage.read_only
Substitua:
CLUSTER_NAME
: o nome do cluster para ativar o provisionamento automático de nós.MINIMUM_CPU
: o número mínimo de núcleos no cluster.MINIMUM_MEMORY
: o número mínimo de gigabytes de memória no cluster.MAXIMUM_CPU
: o número máximo de núcleos no cluster.MAXIMUM_MEMORY
: o número máximo de gigabytes de memória no cluster.
O exemplo a seguir ativa o provisionamento automático de nós no dev-cluster
e
permite o escalonamento entre um tamanho de cluster total de 1 CPU e 1 gigabyte de
memória a um máximo de 10 CPUs e 64 gigabytes de memória:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64
Console
Para ativar o provisionamento automático de nós, execute as seguintes etapas:
Acesse a página do Google Kubernetes Engine no Console do Google Cloud.
Clique no nome do cluster.
Na seção Automação, para provisionamento automático de nós, clique em
Editar.Marque a caixa de seleção Ativar provisionamento automático de nós.
Defina o uso mínimo e máximo da CPU e da memória para o cluster.
Clique em Save changes.
Como usar um arquivo de configuração de provisionamento automático
O provisionamento automático de nós pode ser configurado usando um arquivo de configuração YAML. Se for usado para alterar uma única configuração, o arquivo de configuração poderá conter apenas uma linha. Várias definições podem ser especificadas em um único arquivo de configuração. Nesse caso, todas elas serão alteradas quando o arquivo de configuração for aplicado.
Algumas configurações avançadas só podem ser especificadas com um arquivo de configuração.
Exemplo 1: a aplicação do arquivo de configuração a seguir permite o reparo e upgrade automáticos de nós para qualquer novo pool de nós criado pelo provisionamento automático:
management: autoRepair: true autoUpgrade: true
Exemplo 2: a aplicação do arquivo de configuração abaixo altera as seguintes configurações:
- Define limites de recursos para CPU, memória e GPU. O provisionamento automático de nós não criará um nó se o tamanho total do cluster exceder os limites de recursos especificados.
- Ativa o reparo e o upgrade automáticos de nós em qualquer novo pool de nós criado pelo provisionamento automático de nós.
- Permite o Monitoramento de integridade e Inicialização segura em qualquer novo pool de nós criado pelo provisionamento automático de nós.
- Define o tamanho do disco de inicialização como 100 GB para qualquer novo pool de nós criado pelo provisionamento automático de nós.
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-k80' maximum: 4 management: autoRepair: true autoUpgrade: true shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: true diskSizeGb: 100
Para usar um arquivo de configuração de provisionamento automático:
Crie um arquivo com a configuração desejada em um local em que a CLI da gcloud possa acessá-lo.
Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Para mais informações, consulte a documentação
gcloud container clusters update
.
Padrões de provisionamento automático
O provisionamento automático de nós analisa os requisitos de pods no seu cluster para determinar o tipo de nó mais adequado para esses pods. No entanto, algumas configurações de pool de nós não são especificadas diretamente pelos pods, como configurações relacionadas a upgrades de nó. Defina valores padrão para essas configurações, que serão aplicadas a todos os pools de nós recém-criados.
Como definir o tipo de imagem de nó padrão
É possível especificar o tipo de imagem de nó a ser usado em todos os novos pools de nós provisionados automaticamente usando a CLI gcloud ou um arquivo de configuração. Essa configuração está disponível apenas para a versão 1.20.6-gke.1800 e do cluster do GKE.
gcloud
Para definir o tipo de imagem de nó padrão, execute o comando a seguir:
gcloud container clusters update CLUSTER_NAME \
--enable-autoprovisioning \
--autoprovisioning-image-type IMAGE_TYPE
Substitua:
CLUSTER_NAME
: o nome do cluster.IMAGE_TYPE
: o tipo de imagem do nó, que pode ser um dos seguintes:cos_containerd
: Container-Optimized OS com o containerdubuntu_containerd
Ubuntu com o containerd.
Arquivo
Para todos os novos pools de nós provisionados automaticamente, é possível especificar o tipo de imagem do nó
a ser usado usando um arquivo de configuração.
A seguinte configuração YAML especifica que, para novos pools de nós provisionados
automaticamente, o tipo de imagem é cos_containerd
e tem limites de recursos associados
para CPU e memória. Para ativar o provisionamento automático, especifique os valores máximos para
CPU e memória.
Salve a configuração do YAML:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 imageType: 'cos_containerd'
Aplique a configuração:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Como definir padrões de identidade para pools de nós com provisionamento automático
As permissões para recursos do Google Cloud são fornecidas por identidades.
É possível especificar uma identidade padrão (uma conta de serviço ou pelo menos um escopo) para novos pools de nós com provisionamento automático usando a CLI gcloud ou um arquivo de configuração.
gcloud
Para especificar a conta de serviço padrão do IAM usada pelo provisionamento automático de nós, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-service-account=SERVICE_ACCOUNT
Substitua:
CLUSTER_NAME
: o nome do cluster.SERVICE_ACCOUNT
: o nome da conta de serviço padrão.
O exemplo a seguir define test-service-account@google.com
como a conta de serviço padrão no cluster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning --autoprovisioning-service-account=test-service-account@google.com
Para especificar os escopos padrão usados pelo provisionamento automático de nós, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-scopes=SCOPE
Substitua:
CLUSTER_NAME
: o nome do cluster.SCOPE
: os escopos do Google Cloud usados pelos pools de nós com provisionamento automático. Para especificar vários escopos, separe-os por vírgula. por exemplo:SCOPE1, SCOPE2,...
.
O exemplo a seguir define o escopo padrão no cluster dev-cluster
como devstorage.read_only
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --autoprovisioning-scopes=https://www.googleapis.com/auth/pubsub,https://www.googleapis.com/auth/devstorage.read_only
arquivo
É possível especificar o padrão de identidade usado pelo provisionamento automático de nós usando um arquivo de configuração. A seguinte configuração YAML define a conta de serviço do IAM:
serviceAccount: SERVICE_ACCOUNT
Substitua SERVICE_ACCOUNT
pelo nome da conta de
serviço padrão.
Como alternativa, é possível usar a configuração YAML a seguir para especificar os escopos padrão usados pelo provisionamento automático de nós:
scopes: SCOPE
Substitua SCOPE
pelo escopo do Google Cloud usado pelos
pools de nós com provisionamento automático. Para especificar vários escopos, separe-os
com vírgulas. Por exemplo: SCOPE1, SCOPE2,...
.
Para usar um arquivo de configuração de provisionamento automático:
Crie um arquivo de configuração especificando os padrões de identidade em um local em que a CLI da gcloud possa acessá-lo.
Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês)
É possível especificar chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês) usadas por novos pools de nós provisionados automaticamente.
É possível ativar a criptografia gerenciada pelo cliente para unidades de inicialização usando um arquivo de configuração. A seguinte configuração YAML define a chave de CMEK:
bootDiskKmsKey: projects/KEY_PROJECT_ID/locations/LOCATION/keyRings/KEY_RING/cryptoKeys/KEY_NAME
Substitua:
KEY_PROJECT_ID
: o ID de projeto da chave;LOCATION
: a localização do keyring;KEY_RING
: o nome do keyring;KEY_NAME
: o nome da chave;
Para usar um arquivo de configuração de provisionamento automático:
Crie um arquivo de configuração especificando uma chave CMEK em um local onde a CLI gcloud possa acessá-la.
Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Integridade de nós
O provisionamento automático de nós é compatível com a criação de pools de nós com o Monitoramento de integridade e Inicialização segura ativado.
É possível ativar o Monitoramento de integridade e Inicialização segura usando um arquivo de configuração. A seguinte configuração YAML ativa a Inicialização segura e desativa o Monitoramento de integridade:
shieldedInstanceConfig: enableSecureBoot: true enableIntegrityMonitoring: false
Para usar um arquivo de configuração de provisionamento automático:
Copie a configuração acima em um arquivo em um local em que a CLI gcloud possa acessá-lo. Edite os valores de
enableSecureBoot
eenableIntegrityMonitoring
. Salve o arquivo.Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Reparo e upgrade automáticos de nós
O provisionamento automático de nós é compatível com a criação de pools de nós com o reparo e o upgrade automáticos de nós ativados.
gcloud
Para ativar o reparo e o upgrade automáticos em todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --enable-autoprovisioning-autorepair \ --enable-autoprovisioning-autoupgrade
Substitua CLUSTER_NAME
pelo nome do cluster.
Para desativar o reparo e o upgrade automáticos em todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --no-enable-autoprovisioning-autorepair \ --no-enable-autoprovisioning-autoupgrade
Substitua CLUSTER_NAME
pelo nome do cluster.
arquivo
É possível ativar ou desativar o reparo e o upgrade automáticos de nós usando um arquivo de configuração. A configuração YAML a seguir ativa o reparo automático e desativa o upgrade automático:
management: autoRepair: true autoUpgrade: false
Para usar um arquivo de configuração de provisionamento automático:
Copie a configuração acima em um arquivo em um local em que a CLI gcloud possa acessá-lo. Edite os valores de
autoUpgrade
eautoRepair
. Salve o arquivo.Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Usar upgrades de sobretensão para novos pools de nós provisionados automaticamente
É possível especificar configurações de upgrade súbito em todos os novos pools de nós provisionados automaticamente usando a CLI gcloud ou um arquivo de configuração. Por padrão, o GKE define a estratégia de upgrade de nós para upgrades súbitos.
gcloud
Para especificar as configurações de upgrade súbito para todos os novos pools de nós provisionados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-max-surge-upgrade MAX_SURGE \ --autoprovisioning-max-unavailable-upgrade MAX_UNAVAILABLE
Substitua:
CLUSTER_NAME
: o nome do cluster.MAX_SURGE
: o número máximo de nós que podem ser adicionados ao pool de nós durante os upgrades.MAX_UNAVAILABLE
: o número máximo de nós no pool de nós que podem estar indisponíveis simultaneamente durante os upgrades.
Arquivo
É possível especificar configurações de upgrade súbito para todos os novos pools de nós provisionados automaticamente usando um arquivo de configuração como o seguinte:
upgradeSettings: maxSurgeUpgrade: 1 maxUnavailableUpgrade: 2
Para usar um arquivo de configuração de provisionamento automático:
Copie a configuração acima para um arquivo em um local onde
gcloud
possa acessá-lo. Edite os valores demaxSurgeUpgrade
emaxUnavailableUpgrade
. Salve o arquivo.Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Para mais informações, consulte a documentação gcloud container clusters update
.
Para voltar a usar upgrades de sobretensão para novos pools de nós provisionados automaticamente, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-surge-upgrade
Substitua CLUSTER_NAME
pelo nome do cluster.
Como opção, é possível incluir as sinalizações para configurações específicas, como nos comandos anteriores. O GKE reutilizará a configuração anterior da estratégia de upgrade se ela tiver sido definida.
Usar upgrades azul-verde para novos pools de nós provisionados automaticamente
É possível usar upgrades azul-verde para todos os novos pools de nós provisionados automaticamente usando a CLI gcloud. Com as atualizações azul-verde, você pode usar as configurações padrão ou ajustá-las para otimizar o ambiente. Para saber mais sobre as atualizações azul-verde, consulte Upgrades azul-verde.
Para atualizar a estratégia de upgrade de nós para qualquer pool de nós já existente provisionado automaticamente, consulte Ativar ou desativar o upgrade súbito de um pool de nós já existente e Como atualizar a estratégia de upgrade azul/verde de um pool de nós já existente.
As seguintes variáveis são usadas nos comandos listadas abaixo:
CLUSTER_NAME
: o nome do cluster do pool de nós.COMPUTE_ZONE
: a zona do cluster.NODE_POOL_NAME
: o nome do pool de nós.NUMBER_NODES
: o número de nós no pool em cada uma das zonas do cluster.BATCH_NODE_COUNT
: o número de nós azuis a serem drenados em um lote durante a fase de drenagem do pool azul. O padrão é um. Se for definido como zero, a fase de drenagem do pool azul será ignorada.BATCH_PERCENT
: a porcentagem de nós azuis a serem drenados em um lote durante a fase de drenagem do pool azul. Precisa ser um valor entre [0.0, 1.0].BATCH_SOAK_DURATION
: a duração, em segundos, de espera após cada drenagem em lote. O padrão é zero.NODE_POOL_SOAK_DURATION
: a duração em segundos a ser esperada após a conclusão da drenagem de todos os lotes. O padrão é 3600 segundos.
As configurações padrão para os upgrades azul-verde são:
BATCH_NODE_COUNT
= 1BATCH_SOAK_DURATION
= 0 segundosNODE_POOL_SOAK_DURATION
= 3600 segundos (1 hour)
Atualizar um cluster para usar upgrades azul-verde para novos pools de nós provisionados automaticamente
Os comandos a seguir usam gcloud container clusters
update
para atualizar a estratégia de upgrade de nós para novos pools de nós com provisionamento automático.
Você também pode usar essas sinalizações quando:
- usando o comando
gcloud container clusters create
para criar um cluster com provisionamento automático de nós ativado. - Use o comando
gcoud container clusters update
para ativar o provisionamento automático de nós.
Para atualizar um cluster para usar upgrades azul-verde com configurações padrão para novos pools de nós provisionados automaticamente, use este comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade
É possível atualizar um cluster para usar upgrades azul-verde com configurações
específicas para novos pools de nós provisionados automaticamente. Esses comandos também podem ser usados sem a sinalização --enable-autoprovisioning-blue-green-upgrade
para atualizar as configurações.
O comando a seguir usa BATCH_NODE_COUNT
para definir um tamanho total de lote de contagem de nós:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --enable-autoprovisioning-blue-green-upgrade \ --autoprovisioning-node-pool-soak-duration=NODE_POOL_SOAK_DURATION \ --autoprovisioning-standard-rollout-policy=batch-node-count=BATCH_NODE_COUNT,batch-soak-duration=BATCH_SOAK_DURATION
Também é possível usar BATCH_PERCENT
para definir um tamanho de lote com base em porcentagem, substituindo
batch-node-count
no último comando por batch-percent
e usando um decimal
entre 0 e 1 (por exemplo, 25% é 0.25
Para saber como os tamanhos de lote com base em porcentagem
são definidos, consulte Atualizar um pool de nós com upgrade azul/verde usando tamanhos de lote com base em porcentagem.
Discos de inicialização personalizados
O provisionamento automático de nós é compatível com a criação de pools de nós com discos de inicialização personalizados.
É possível personalizar a configuração do disco de inicialização usando um arquivo de configuração. O GKE reserva uma parte do disco de inicialização de nós para as funções do kubelet. Para mais informações, consulte Armazenamento temporário baseado em disco de inicialização de nós.
A seguinte configuração YAML faz com que o provisionamento automático de nós crie pools de nós com discos SSD de 100 GB:
diskSizeGb: 100 diskType: pd-ssd
Especifique o seguinte:
diskSizeGb
: o tamanho do disco, especificado em GB;diskType
: o tipo de disco, que pode ser um dos seguintes valores:pd-balanced
(padrão)pd-standard
pd-ssd
. No GKE 1.22 e em versões anteriores, quando você especificapd-ssd
, o provisionamento automático de nós considera apenas os tipos de máquina N1 ao criar pools de nós.
Para usar um arquivo de configuração de provisionamento automático:
Crie um arquivo com a configuração de disco de inicialização desejada em um local em que a CLI gcloud possa acessá-lo.
Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Como separar pods kube-system
de cargas de trabalho
Como administrador de cluster, você pode querer separar os pods kube-system
das
suas cargas de trabalho. Essa configuração impede que o cluster tenha problemas de redução em nós subutilizados com pods kube-system
em execução.
O exemplo a seguir mostra como separar pods kube-system
de cargas de trabalho do cluster usando uma combinação de provisionamento automático de nós e tolerâncias de taint.
Crie um cluster com um pool de nós padrão de VMs
e2-standard-2
:gcloud container clusters create test --machine-type=e2-standard-2
Aplique um taint no pool de nós
default-pool
:kubectl taint nodes -l cloud.google.com/gke-nodepool=default-pool CriticalAddonsOnly=true:NoSchedule
O resultado será assim:
node/gke-test-default-pool-66fd7aed-7xbd tainted node/gke-test-default-pool-66fd7aed-kg1x tainted node/gke-test-default-pool-66fd7aed-ljc7 tainted
Ative o provisionamento automático de nós para o cluster:
gcloud container clusters update test \ --enable-autoprovisioning \ --min-cpu 1 \ --min-memory 1 \ --max-cpu 10 \ --max-memory 64 \ --autoprovisioning-scopes= \ https://www.googleapis.com/auth/logging.write,\ https://www.googleapis.com/auth/monitoring, \ https://www.googleapis.com/auth/devstorage.read_only
O cluster pode ser escalonado entre o tamanho total de 1 CPU e 1 gigabyte de memória para, no máximo, 10 CPUs e 64 gigabytes de memória.
Para testar essa configuração, salve o seguinte manifesto de amostra como
nginx.yaml
:apiVersion: v1 kind: Pod metadata: name: nginx labels: env: test spec: containers: - name: nginx image: nginx imagePullPolicy: IfNotPresent tolerations: - key: dedicated operator: Equal value: ui-team effect: NoSchedule nodeSelector: dedicated: ui-team
Esse manifesto implanta um pod de carga de trabalho de teste no cluster com um identificador
nodeSelector
e um taint de nó dededicated: ui-team
. Sem provisionamento automático de nós, este pod de carga de trabalho não pode ser programado porque nenhum pool de nós tem o identificador e os taints apropriados.Aplique o manifesto ao cluster:
kubectl apply -f nginx.yaml
O resultado será assim:
pod/nginx created
Confira o novo pool de nós que se encaixa no identificador
ui-team
:kubectl get node --selector=dedicated=ui-team
O resultado será assim:
NAME STATUS ROLES AGE VERSION gke-test-nap-e2-medium-14b723z1-19f89fa8-jmhr Ready <none> 14s v1.21.11-gke.900
Com o provisionamento automático de nós e as tolerâncias de taints, o cluster separa
kube-system
dos pods de cargas de trabalho.
Usar aceleradores para novos pools de nós provisionados automaticamente
É possível ativar o provisionamento automático de nós e configurar o GKE para provisionar automaticamente aceleradores de GPU ou do Cloud TPU, a fim de garantir a capacidade necessária para programar cargas de trabalho de IA/ML.
Como configurar limites de GPU
Ao usar o provisionamento automático de nós com GPUs, defina o limite máximo de cada tipo de GPU no cluster usando a CLI gcloud ou o Console do Google Cloud. A contagem do limite de GPUs é o número máximo de GPUs. Por exemplo, uma VM com 16 GPUs conta como 16, não 1 para esse limite. Para configurar vários tipos de GPU, use um arquivo de configuração.
Para listar os resourceTypes disponíveis, execute gcloud compute accelerator-types list
.
gcloud
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --max-cpu MAXIMUM_CPU \ --max-memory MAXIMUM_MEMORY \ --min-accelerator type=GPU_TYPE,count=MINIMUM_ACCELERATOR \ --max-accelerator type=GPU_TYPE,count=MAXIMUM_ACCELERATOR
Substitua:
CLUSTER_NAME
: o nome do cluster.MAXIMUM_CPU
: o número máximo de núcleos no cluster.MAXIMUM_MEMORY
: o número máximo de gigabytes de memória no cluster.GPU_TYPE
: o tipo de GPU.MINIMUM_ACCELERATOR
: o número mínimo de aceleradores de GPU no cluster.MAXIMUM_ACCELERATOR
: o número máximo de aceleradores de GPU no cluster.
O exemplo a seguir define os limites de GPU para o tipo de acelerador de GPU nvidia-tesla-k80
no cluster dev-cluster
:
gcloud container clusters update dev-cluster \ --enable-autoprovisioning \ --max-cpu 10 \ --max-memory 64 \ --min-accelerator type=nvidia-tesla-k80,count=1 \ --max-accelerator type=nvidia-tesla-k80,count=4
arquivo
É possível carregar limites para vários tipos de GPU usando um arquivo de configuração. A seguinte configuração YAML configura dois tipos diferentes de GPUs:
resourceLimits: - resourceType: 'cpu' minimum: 4 maximum: 10 - resourceType: 'memory' maximum: 64 - resourceType: 'nvidia-tesla-k80' maximum: 4 - resourceType: 'nvidia-tesla-v100' maximum: 2
Para usar um arquivo de configuração de provisionamento automático:
Copie a configuração acima em um arquivo em um local em que a CLI gcloud possa acessá-lo. Edite os valores de
cpu
ememory
. Adicione quantos valores forem necessários pararesourceType
. Salve o arquivo.Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Para mais informações, consulte a documentação gcloud container clusters update
.
Console
Para ativar o provisionamento automático de nós com recursos de GPU, execute as seguintes etapas:
Acesse a página do Google Kubernetes Engine no Console do Google Cloud.
Clique no nome do cluster.
Na seção Automação, para provisionamento automático de nós, clique em
Editar.Marque a caixa de seleção Ativar provisionamento automático de nós.
Defina o uso mínimo e máximo da CPU e da memória para o cluster.
Clique em
Adicionar recurso.Selecione o tipo de GPU que você quer adicionar, por exemplo, NVIDIA TESLA K80. Defina os números mínimo e máximo de GPUs para adicionar ao cluster.
Aceite as limitações das GPUs no GKE.
Clique em Salvar.
Escolha uma versão do driver para instalar
No GKE versão 1.29.2-gke.1108000 e mais recentes, selecione uma versão do driver da GPU para que o GKE instale automaticamente nos nós da GPU provisionados automaticamente. Adicione o seguinte campo ao seu manifesto:
spec:
nodeSelector:
cloud.google.com/gke-gpu-driver-version: "DRIVER_VERSION"
Substitua DRIVER_VERSION
por um dos seguintes valores:
default
: o driver padrão e estável para a versão do GKE do seu nó. Se você omitir o nodeSeletor do manifesto, essa será a opção padrão.latest
: a versão mais recente do driver disponível para a versão do GKE do nó.
Como configurar Cloud TPUs
A partir do GKE 1.28, é possível usar o provisionamento automático de nós com Cloud TPUs. No entanto, a v5p não é compatível com o provisionamento automático de nós e escalonamento automático de cluster. Defina os limites da TPU no nível do cluster e crie os pools de nós da TPU. Para saber como funciona o provisionamento automático de nós com TPUs, consulte Aceleradores de machine learning compatíveis.
Crie um cluster e configure os pods para usar os recursos da TPU por meio da CLI gcloud. Para configurar vários tipos de TPU, use um arquivo de configuração.
gcloud
Crie um cluster e defina os limites de TPU:
gcloud container clusters create CLUSTER_NAME \ --enable-autoprovisioning \ [--min-cpu MINIMUM_CPU ] \ --max-cpu MAXIMUM_CPU \ [--min-memory MINIMUM_MEMORY ] \ --max-memory MAXIMUM_MEMORY \ [--min-accelerator=type=TPU_TYPE,count= MINIMUM_ACCELERATOR ] \ --max-accelerator=type=TPU_TYPE,count= MAXIMUM_ACCELERATOR
Substitua:
CLUSTER_NAME
: o nome do cluster.MINIMUM_CPU
: o número mínimo de vCPUs no cluster.MAXIMUM_CPU
: o número máximo de vCPUs no cluster.MINIMUM_MEMORY
: o número mínimo de gigabytes de memória no cluster.MAXIMUM_MEMORY
: o número máximo de gigabytes de memória no cluster.TPU_TYPE
: o tipo de TPU escolhido. Usetpu-v4-podslice
para selecionar a TPU v4. Para selecionar a TPU v5e com um tipo de máquina que começa comct5lp-
, usetpu-v5-lite-podslice
. Para selecionar o TPU v5e com um tipo de máquina que começa comct5l-
, usetpu-v5-lite-device
.MINIMUM_ACCELERATOR
: o número mínimo de ícones de TPU no cluster.- Observe que o uso de
MINIMUM_ACCELERATOR
pode bloquear a redução da escala vertical de frações de TPU de vários hosts mesmo quandocount
é menor que o número de ícones de TPU na fração.
- Observe que o uso de
MAXIMUM_ACCELERATOR
: o número máximo de ícones de TPU no cluster.- Se a configuração do pod solicitar uma fração de TPU de vários hosts,
o GKE a criará atomicamente. Defina o valor de
contagem alto o suficiente para permitir o provisionamento de todos os ícones de
TPU da topologia especificada. O número de ícones em cada fração da TPU
é igual ao produto da topologia. Por exemplo, se a topologia da
fração de TPU de vários hosts for
2x2x2
, o número de ícones de TPU será igual a8
. Portanto,MAXIMUM_ACCELERATOR
precisará ser maior que 8.
- Se a configuração do pod solicitar uma fração de TPU de vários hosts,
o GKE a criará atomicamente. Defina o valor de
contagem alto o suficiente para permitir o provisionamento de todos os ícones de
TPU da topologia especificada. O número de ícones em cada fração da TPU
é igual ao produto da topologia. Por exemplo, se a topologia da
fração de TPU de vários hosts for
O exemplo a seguir define os limites de TPU para os tipos de máquina
ct5lp-hightpu-1t
,ct5lp-hightpu-4t
ect5lp-hightpu-8t
no clusterdev-cluster
. Por exemplo, até dez máquinasct5lp-hightpu-4t
podem ser provisionadas, cada uma com quatro ícones de TPU, 112 vCPU e 192 GiB de memória.gcloud container clusters create dev-cluster-inference \ --enable-autoprovisioning \ --min-cpu 0 \ --max-cpu 1120 \ --min-memory 0 \ --max-memory 1920 \ --min-accelerator=type=tpu-v5-lite-podslice,count=0 \ --max-accelerator=type=tpu-v5-lite-podslice,count=40
Crie uma especificação de implantação que faça com que um pod solicite recursos de TPU. Por exemplo, o seguinte manifesto fará com que o GKE provisione quatro nós
ct5lp-hightpu-4t
:apiVersion: apps/v1 kind: Deployment metadata: name: tpu-workload labels: app: tpu-workload spec: replicas: 4 selector: matchLabels: app: nginx-tpu template: metadata: labels: app: nginx-tpu spec: nodeSelector: cloud.google.com/gke-tpu-accelerator: tpu-v5-lite-podslice cloud.google.com/gke-tpu-topology: 2x2 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
No campo
nodeSelector
, defina o tipo de TPU, a topologia da TPU e a contagem de aceleradores, em que:cloud.google.com/gke-tpu-accelerator
: define o tipo de TPU. Por exemplo,tpu-v4-podslice
.cloud.google.com/gke-tpu-topology
: define a topologia da TPU, por exemplo,2x2x1
ou4x4x8
.
Para consumir uma reserva atual com sua carga de trabalho, especifique outro rótulo no campo
nodeSelector
: *cloud.google.com/reservation-name
: define o nome da reserva que o GKE usa para provisionar automaticamente os nós.Em
limits: google.com/tpu
, defina o número de ícones por nó.
Arquivo
É possível atribuir limites para vários tipos de TPUs usando um arquivo de configuração. A seguinte configuração YAML define dois tipos diferentes de TPUs:
resourceLimits: - resourceType: 'cpu' maximum: 10000 - resourceType: 'memory' maximum: 10000 - resourceType: 'tpu-v4-podslice' maximum: 32 - resourceType: 'tpu-v5-lite' maximum: 64
Para usar um arquivo de configuração de provisionamento automático:
Copie a configuração acima em um arquivo em um local em que a CLI gcloud possa acessá-lo. Edite os valores de
resourceType
emaximum
. Adicione quantos valores forem necessários pararesourceType
. Salve o arquivo.Aplique a configuração ao cluster executando o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o nome do arquivo de configuração.
Para mais informações, consulte a documentação gcloud container clusters update
.
Locais do provisionamento automático de nós
Defina as zonas em que o provisionamento automático de nós pode criar novos pools de nós. Os locais regionais não são compatíveis. Zonas precisam pertencer à mesma região que o cluster, mas não estão limitadas a locais de nós definidos no nível do cluster. Alterar os locais de provisionamento automático de nós não afeta os pools de nós existentes.
Para definir locais em que o provisionamento automático de nós possa criar novos pools de nós, use a CLI gcloud ou um arquivo de configuração.
gcloud
Execute este comando:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning --autoprovisioning-locations=ZONE
Substitua:
CLUSTER_NAME
: o nome do cluster.ZONE
: a zona em que o provisionamento automático de nós pode criar novos pools de nós. Para especificar várias zonas, separe-as por vírgula. Por exemplo:ZONE1, ZONE2,...
.
Arquivo
Para definir locais em que o provisionamento automático de nós pode criar novos pools de nós, use um arquivo de configuração.
Adicione a seguinte configuração YAML que define o local do novo pool de nós:
autoprovisioningLocations:
- ZONE
Substitua ZONE
pela zona
em que o provisionamento automático de nós pode criar novos pools de nós. Para especificar várias
zonas, adicione mais zonas à lista. Salve o arquivo.
Para usar um arquivo de configuração de provisionamento automático:
Crie um arquivo de configuração em um local em que
gcloud CLI
possa acessá-lo.Aplique a configuração ao seu cluster:
gcloud container clusters update CLUSTER_NAME \ --enable-autoprovisioning \ --autoprovisioning-config-file FILE_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.FILE_NAME
: o caminho do arquivo de configuração.
Nós fisicamente próximos com posicionamento compacto
A partir da versão 1.25 do GKE, o provisionamento automático de nós é compatível com a política de posicionamento compacto. Com a política de posicionamento compacto, é possível instruir o GKE para criar pools de nós mais próximos dentro de uma zona.
Para definir uma política de posicionamento compacto, adicione um nodeSelector
à especificação do pod
com as seguintes chaves:
cloud.google.com/gke-placement-group
é o identificador atribuído ao grupo de pods que precisam ser executados juntos, no mesmo grupo de posicionamento compacto.cloud.google.com/machine-family
é o nome da família de máquinas. Para mais informações, consulte as famílias de máquinas compatíveis com a posição compacta.
O exemplo a seguir define uma política de posicionamento compacto com um identificador de grupo
de posições de placement-group-1
e uma família de máquinas de c2
:
apiVersion: v1
kind: Pod
metadata:
...
spec:
...
nodeSelector:
cloud.google.com/gke-placement-group: placement-group-1
cloud.google.com/machine-family: c2
Para mais informações, consulte como definir a posição compacta para os nós do GKE.
Como desativar o provisionamento automático de nós
Quando você desativa o provisionamento automático de nós para um cluster, os pools de nós não são mais provisionados automaticamente.
gcloud
Para desativar o provisionamento automático de nós para um cluster, execute o seguinte comando:
gcloud container clusters update CLUSTER_NAME \ --no-enable-autoprovisioning
Substitua CLUSTER_NAME
pelo nome do cluster.
Arquivo
Para desativar o provisionamento automático de nós usando o Console do Google Cloud:
Acesse a página do Google Kubernetes Engine no Console do Google Cloud.
Clique no nome do cluster.
Na seção Automação, para provisionamento automático de nós, clique em
Editar.Desmarque a caixa de seleção Ativar provisionamento automático de nós.
Clique em Save changes.
Marcar o pool de nós como provisionado automaticamente
Depois de ativar o provisionamento automático de nós no cluster, especifique quais pools de nós serão provisionados automaticamente. Um pool de nós desse tipo é excluído automaticamente quando não é usado por nenhuma carga de trabalho.
Para marcar um pool de nós como automaticamente provisionado, execute o seguinte comando:
gcloud container node-pools update NODE_POOL_NAME \ --enable-autoprovisioning
Substitua NODE_POOL_NAME
pelo nome do pool de nós.
Como marcar o pool de nós como não provisionado automaticamente
Para marcar um pool de nós como não provisionado automaticamente, execute o seguinte comando:
gcloud container node-pools update NODE_POOL_NAME \ --no-enable-autoprovisioning
Substitua NODE_POOL_NAME
pelo nome do pool de nós.
Como usar uma família de máquinas personalizada
A partir do GKE 1.19.7-gke.800, é possível escolher uma família de máquinas para as suas cargas de trabalho. A família de máquinas T2D é compatível com a versão 1.22 e mais recentes do GKE.
Para escolher uma família de máquinas para as suas cargas de trabalho, execute uma das seguintes tarefas:
- Defina a afinidade do nó com a chave de
cloud.google.com/machine-family
, o operadorIn
e o valor como a família de máquinas desejada (por exemplo,n2
). - Adicione um
nodeSelector
com a chave decloud.google.com/machine-family
e o valor como a família de máquinas desejada.
Confira um exemplo que define o nodeAffinity
para uma família de máquinas de n2
:
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: cloud.google.com/machine-family
operator: In
values:
- n2
Após aplicar as alterações, o provisionamento automático de nós escolhe o melhor pool de nós com um tipo de máquina dentro da família de máquinas especificada. Se vários valores forem usados para a expressão correspondente, um valor será escolhido arbitrariamente.
Plataforma mínima de CPU
O provisionamento automático de nós oferece suporte à criação de pools de nós com uma plataforma de CPU mínima especificada. É possível especificar a plataforma de CPU mínima no nível da carga de trabalho (recomendado) ou no nível do cluster.
A seguir
- Saiba mais sobre o autoescalador de clusters.
- Saiba mais sobre pools de nós.
- Saiba mais sobre as estratégias de upgrade de nós.