Nesta página, você vê como adicionar e executar operações em pools de nós que executam os clusters do Google Kubernetes Engine (GKE) Standard. Para aprender sobre como os pools de nós funcionam, consulte Sobre pools de nós.
Os clusters podem executar operações, como provisionamento automático de nós, em vários pools de nós em paralelo. É possível criar, atualizar ou excluir manualmente um pool de nós enquanto outro pool de nós já está sendo criado, atualizado ou excluído.
Essas instruções não se aplicam aos clusters do Autopilot, em que O GKE gerencia os nós, e não há pools de nós para você gerenciar. Para saber mais, consulte o Autopilot geral.
Antes de começar
Antes de começar, veja se você realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a CLI do Google Cloud para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a gcloud CLI anteriormente, instale a versão
mais recente executando
gcloud components update
.
Configurar contas de serviço do IAM para o GKE
O GKE usa contas de serviço do IAM anexadas aos seus nós para executar tarefas do sistema, como geração de registros e monitoramento. No mínimo, essas contas de serviço de nó
precisam ter o papel de
conta de serviço de nó padrão do Kubernetes Engine
(roles/container.defaultNodeServiceAccount
) no projeto. Por padrão,
o GKE usa a
conta de serviço padrão do Compute Engine,
que é criada automaticamente no projeto, como a conta de serviço do nó.
Para conceder o papel roles/container.defaultNodeServiceAccount
à conta de serviço padrão do Compute Engine, siga estas etapas:
Console
- Acesse a página Welcome:
- No campo Número do projeto, clique em Copiar para a área de transferência.
- Acesse a página do IAM:
- Clique em CONCEDER ACESSO.
- No campo Novos participantes, especifique o seguinte valor:
SubstituaPROJECT_NUMBER-compute@developer.gserviceaccount.com
PROJECT_NUMBER
pelo número do projeto que você copiou. - No menu Selecionar um papel, selecione o papel Conta de serviço de nó padrão do Kubernetes Engine.
- Clique em Salvar.
gcloud
- Encontre o número do projeto do Google Cloud:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"
Substitua
PROJECT_ID
pela ID do seu projeto.O resultado será assim:
12345678901
- Conceda o papel
roles/container.defaultNodeServiceAccount
à conta de serviço padrão do Compute Engine:gcloud projects add-iam-policy-binding PROJECT_ID \ --member="serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com" \ --role="roles/container.defaultNodeServiceAccount"
Substitua
PROJECT_NUMBER
pelo número do projeto da etapa anterior.
Adicionar um pool de nós a um cluster padrão
É possível adicionar um novo pool de nós a um cluster do GKE Standard usando a gcloud CLI, o console do Google Cloud ou o Terraform. O GKE também tem o provisionamento automático de nós, que gerencia automaticamente os pools de nós no cluster com base nos requisitos de escalonamento.
Crie e use uma conta de serviço do Identity and Access Management (IAM) com privilégios mínimos para os pools de nós usarem em vez da conta de serviço padrão do Compute Engine. Para instruções sobre como criar uma conta de serviço com privilégios mínimos, consulte Como aumentar a segurança do cluster.
gcloud
Para criar um pool de nós, execute o comando
gcloud container node-pools create
:
gcloud container node-pools create POOL_NAME \
--cluster CLUSTER_NAME \
--service-account SERVICE_ACCOUNT
Substitua:
POOL_NAME
: o nome do novo pool de nós.CLUSTER_NAME
: o nome do cluster atual.SERVICE_ACCOUNT
: o nome da conta de serviço do IAM a ser usada pelos nós.Recomendamos que você especifique uma conta de serviço do IAM com privilégios mínimos que os nós possam usar em vez da conta de serviço padrão do Compute Engine. Para saber como criar uma conta de serviço com privilégios mínimos, consulte Usar uma conta de serviço com privilégio mínimo.
Para especificar uma conta de serviço personalizada na CLI gcloud, adicione a seguinte flag ao comando:
--service-account=SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
Substitua SERVICE_ACCOUNT_NAME pelo nome da sua conta de serviço de privilégio mínimo.
Para ver uma lista completa das sinalizações opcionais que podem ser especificadas, consulte a
documentação
gcloud container node-pools create
.
O resultado será assim:
Creating node pool POOL_NAME...done.
Created [https://container.googleapis.com/v1/projects/PROJECT_ID/zones/us-central1/clusters/CLUSTER_NAME/nodePools/POOL_NAME].
NAME: POOL_NAME
MACHINE_TYPE: e2-medium
DISK_SIZE_GB: 100
NODE_VERSION: 1.21.5-gke.1302
Nesta saída, você vê detalhes sobre o pool de nós, como o tipo de máquina e a versão do GKE em execução nos nós.
Às vezes, o pool de nós é criado, mas os comandos gcloud
expiram em vez de relatar o status do servidor. Para verificar o
status de todos os pools de nós, incluindo aqueles que ainda não foram totalmente provisionados, use o
comando a seguir:
gcloud container node-pools list --cluster CLUSTER_NAME
Console
Para adicionar um pool de nós a um cluster atual Standard, execute as etapas a seguir:
Acesse a página do Google Kubernetes Engine no console do Google Cloud.
Na lista de clusters, clique no nome do cluster Standard que você quer modificar.
Clique em add_boxAdicionar pool de nós.
Configure o pool de nós.
No menu de navegação, clique em Segurança.
- Opcionalmente, especifique uma conta de serviço do IAM personalizada para seus nós:
- Na página Configurações avançadas, abra a seção Segurança.
- No menu Conta de serviço, selecione a conta de serviço que você quer usar.
Recomendamos que você especifique uma conta de serviço do IAM com privilégios mínimos que os nós possam usar em vez da conta de serviço padrão do Compute Engine. Para saber como criar uma conta de serviço com privilégios mínimos, consulte Usar uma conta de serviço com privilégio mínimo.
Clique em Criar para adicionar o pool de nós.
Terraform
Para adicionar um pool de nós a um cluster Standard atual usando o Terraform, consulte o exemplo a seguir:
Para saber mais como usar o Terraform, consulte o Suporte do Terraform para GKE.
Visualize pools de nós em um cluster Standard.
gcloud
Para listar todos os pools de nós de um cluster Standard, execute o
comando
gcloud container node-pools list
:
gcloud container node-pools list --cluster CLUSTER_NAME
Para visualizar detalhes sobre um pool de nós específico, execute o
comando
gcloud container node-pools describe
:
gcloud container node-pools describe POOL_NAME \
--cluster CLUSTER_NAME
Substitua:
CLUSTER_NAME
: o nome do cluster.POOL_NAME
: o nome do pool de nós a ser visualizado.
Console
Para ver os pools de nós de um cluster Standard, siga estas etapas:
Acesse a página do Google Kubernetes Engine no console do Google Cloud.
Na lista de clusters, clique no nome do cluster padrão.
Clique na guia Nós.
Em Pools de nós, clique no nome do pool que você quer visualizar.
Escalonar um pool de nós
É possível aumentar ou diminuir o escalonamento dos pools de nós para otimizar o desempenho e os custos. Com os pools de nós do GKE Standard, é possível escalonar um pool de nós horizontalmente alterando o número de nós no pool de nós ouescalonar um pool de nós verticalmente alterando a configuração de atributos de máquina dos nós.
Escalonar horizontalmente mudando a contagem de nós
gcloud
Para redimensionar os pools de nós de um cluster, execute o
comando
gcloud container clusters resize
:
gcloud container clusters resize CLUSTER_NAME \
--node-pool POOL_NAME \
--num-nodes NUM_NODES
Substitua:
CLUSTER_NAME
: o nome do cluster a ser redimensionado.POOL_NAME
: o nome do pool de nós a ser redimensionado.NUM_NODES
: o número de nós no pool em um cluster zonal. Se você usar clusters regionais ou de várias zonas, NUM_NODES será o número de nós para cada zona em que o pool de nós está.
Repita esse comando para cada pool de nós. Se o cluster tiver apenas um pool de nós, omita a sinalização --node-pool
.
Console
Para reescalonar os pools de nós do cluster, siga estas etapas:
Acesse a página do Google Kubernetes Engine no Console do Google Cloud.
Na lista de clusters, clique no nome do cluster Standard que você quer modificar.
Clique na guia Nós.
Na seção Pool de nós, clique no nome do pool de nós que você quer redimensionar.
Clique em edit Redimensionar.
No campo Número de nós, insira quantos nós você quer no pool de nós e clique em Redimensionar.
Repita essa etapa para cada pool de nós conforme necessário.
Escalonar verticalmente alterando os atributos da máquina do nó
É possível modificar o tipo de máquina configurado, o tipo de disco e o tamanho do disco do pool de nós.
Quando você edita um ou mais desses atributos de máquina, o GKE atualiza os nós para a nova configuração usando a estratégia de upgrade configurada para o pool de nós. Se você configurar a estratégia de upgrade azul-verde, será possível migrar as cargas de trabalho dos nós originais para os novos nós e, ao mesmo tempo, reverter os nós originais se a migração falhar. Inspecione as configurações de upgrade do pool de nós para garantir que a estratégia definida seja como você quer que seus nós sejam atualizados.
Atualize pelo menos um dos atributos de máquina destacados no seguinte comando:
gcloud container node-pools update POOL_NAME \
--cluster CLUSTER_NAME \
--machine-type MACHINE_TYPE \
--disk-type DISK_TYPE \
--disk-size DISK_SIZE
Omita as flags dos atributos de máquina que você não quer mudar. No entanto, você precisa usar pelo menos uma sinalização de atributo de máquina, caso contrário o comando falhará.
Substitua:
POOL_NAME
: o nome do pool de nós a ser redimensionado.CLUSTER_NAME
: o nome do cluster a ser redimensionado.MACHINE_TYPE
: o tipo de máquina a ser usado para nós. Para saber mais, consulte atualização de pool de nós de contêiner do gcloud.DISK_TYPE
: o tipo do disco de inicialização da VM do nó precisa serpd-standard
,pd-ssd
oupd-balanced
.DISK_SIZE
: o tamanho dos discos de inicialização da VM do nó em GB. É usado o padrão de 100 GB.
Essa mudança requer a recriação dos nós, o que pode causar interrupções nas cargas de trabalho em execução. Para saber mais sobre essa mudança específica, encontre a linha correspondente na tabela mudanças manuais que recriam os nós usando uma estratégia de upgrade de nós sem respeitar as políticas de manutenção. Para saber mais sobre as atualizações de nós, consulte Planejar para interrupções de atualização de nós.
Fazer upgrade de um pool de nós
Por padrão, os nós de um cluster têm o upgrade automático ativado. Os upgrades automáticos de nós garantem que o plano de controle e a versão do nó do cluster permaneçam sincronizados e em conformidade com a política de desvio de versão do Kubernetes, que garante que os planos de controle sejam compatíveis com nós de até duas versões secundárias mais antigas que o plano de controle. Por exemplo, os planos de controle do Kubernetes 1.29 são compatíveis com os nós do Kubernetes 1.27.
Evite desativar os upgrades automáticos de nó para que o cluster se beneficie dos upgrades listados no parágrafo anterior.
Com os upgrades de pool de nós do GKE, é possível escolher entre duas estratégias de upgrade configuráveis, ou seja, upgrades súbitos e upgrades azul-verde.
Escolha uma estratégia e use os parâmetros para ajustá-la de acordo com as necessidades do ambiente do cluster.
Como os upgrades de nós funcionam
Enquanto um nó está sendo atualizado, o GKE interrompe a programação de novos pods nele e tenta programar seus pods em execução em outros nós. Isso é semelhante a outros eventos que recriam o nó, como ativar ou desativar um recurso no pool de nós.
Durante upgrades automáticos ou manuais de nós,
PodDisruptionBudgets (PDBs)
e o período de carência do encerramento do pod
são respeitados por 1 hora no máximo. Se os pods em execução no nó não puderem ser
programados em novos nós após uma hora, o GKE inicia o
upgrade mesmo assim. Esse comportamento se aplica mesmo se você configurar seus PDBs para sempre
ter todas as suas réplicas disponíveis, definindo o campo maxUnavailable
como
0
ou 0%
ou definindo o campo minAvailable
como 100%
ou ao
número de réplicas. Em todos esses cenários, o GKE exclui os
pods após uma hora para que a exclusão do nó possa acontecer.
Se uma carga de trabalho exigir mais flexibilidade com encerramento otimizado, use upgrades azul-verde, que fornecem configurações para mais tempo de imersão para estender as verificações de PDB além do padrão de 1 hora.
Para saber mais sobre o que esperar durante o encerramento do nó em geral, consulte o tópico sobre Pods.
O upgrade será concluído apenas quando todos os nós forem recriados e o cluster assumir o estado desejado. Quando um nó recém-atualizado é registrado no plano de controle, o GKE o marca como programável.
As instâncias do novo nó executam a versão do Kubernetes desejada e também:
Fazer upgrade manual de um pool de nós
É possível fazer upgrade manual de uma versão do pool de nós para igualá-la à versão do plano de controle ou a uma versão anterior que ainda esteja disponível e seja compatível com o plano de controle. É possível fazer upgrade manual de vários pools de nós em paralelo, enquanto o GKE atualiza automaticamente apenas um pool de nós por vez.
Quando você faz upgrade manual de um pool de nós, o GKE remove todos os rótulos adicionados a nós individuais usando kubectl
.
Para evitar isso, aplique rótulos aos pools de nós
Antes de fazer upgrade manual do pool de nós, considere as seguintes condições:
- O upgrade de um pool de nós pode interromper a execução das cargas de trabalho nele. Para evitar que isso aconteça, crie um novo pool de nós com a versão pretendida e migre a carga de trabalho. Após a migração, é possível excluir o antigo pool de nós.
- Se você fizer upgrade de um pool de nós que tenha um Entrada com erro,
o grupo de instâncias não será sincronizado. Para contornar esse problema, primeiro verifique o
status usando o comando
kubectl get ing
. Se o grupo de instâncias não estiver sincronizado, aplique novamente o manifesto usado para criar o Ingress.
É possível fazer upgrade dos pools de nós manualmente para uma versão compatível com o plano de controle usando o Console do Google Cloud ou a Google Cloud CLI.
gcloud
As variáveis a seguir são usadas nos comandos desta seção:
CLUSTER_NAME
: o nome do cluster do pool de nós a ser atualizado.NODE_POOL_NAME
: o nome do pool de nós a ser atualizado.VERSION
: a versão do Kubernetes para que os nós são atualizados. Por exemplo,--cluster-version=1.7.2
oucluster-version=latest
.
Fazer upgrade de um pool de nós:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME
Para especificar uma versão diferente do GKE nos nós, use a
sinalização opcional --cluster-version
:
gcloud container clusters upgrade CLUSTER_NAME \
--node-pool=NODE_POOL_NAME \
--cluster-version VERSION
Para mais informações sobre como especificar versões, consulte Controle de versões.
Para mais informações, consulte a
documentação gcloud container clusters upgrade
.
Console
Para fazer upgrade de um pool de nós com o console do Google Cloud, siga as etapas a seguir:
Acesse a página do Google Kubernetes Engine no console do Google Cloud.
Ao lado do cluster que você quer editar, clique em more_vert Ações e, depois, em edit Editar.
Na página Detalhes do cluster, clique na guia Nós.
Na seção Pools de nós, clique no nome do pool de nós que você quer atualizar.
Clique em edit Editar.
Em Versão do nó, clique em Alterar.
Selecione a versão pretendida na lista suspensa Versão do nó e clique em Alterar.
Talvez leve vários minutos para que a versão do nó seja alterada.
Implantar um pod em um pool de nós específico
É possível implantar explicitamente um pod em um pool de nós específico usando um
nodeSelector
no manifesto do pod. nodeSelector
programa pods em
nós com um rótulo correspondente.
Todos os pools de nós do GKE têm rótulos com o seguinte formato:
cloud.google.com/gke-nodepool: POOL_NAME
.
Adicione esse rótulo ao campo nodeSelector
no seu pod, conforme mostrado no
exemplo a seguir:
apiVersion: v1
kind: Pod
metadata:
name: nginx
labels:
env: test
spec:
containers:
- name: nginx
image: nginx
imagePullPolicy: IfNotPresent
nodeSelector:
cloud.google.com/gke-nodepool: POOL_NAME
Para mais informações, consulte Como atribuir pods a nós.
Como alternativa ao seletor de nós, é possível usar a afinidade de nó. Use essa afinidade se quiser uma regra "soft" em que o pod tenta cumprir a restrição, mas ainda seja programado, mesmo que a restrição não seja atendida. Para mais informações, consulte Afinidade de nó. Também é possível especificar solicitações de recursos nos contêineres.
Fazer downgrade de um pool de nós
É possível fazer downgrade de um pool de nós, por exemplo, para reduzir um upgrade mal-sucedido. Analise as limitações antes de fazer downgrade de um pool de nós.
Use a estratégia de upgrade de nó azul-verde se você precisar otimizar para mitigação de riscos em upgrades de pool de nós que afetam suas cargas de trabalho. Com essa estratégia, é possível reverter um upgrade em andamento para os nós originais se o upgrade não for bem-sucedido.
- Defina uma exclusão de manutenção para o cluster para evitar que o pool de nós seja atualizado automaticamente pelo GKE após o downgrade.
- Para fazer downgrade de um pool de nós, especifique uma versão anterior seguindo as instruções para Fazer upgrade manual de um pool de nós.
Excluir um pool de nós
A exclusão de um pool de nós exclui os nós e todas as cargas de trabalho em execução, sem respeitar as configurações de PodDisruptionBudget
. Para saber mais sobre como isso afeta as cargas de trabalho, incluindo
interações com seletores de nós, consulte Como excluir pools
de nós.
gcloud
Para excluir um pool de nós, execute o comando
gcloud container node-pools delete
:
gcloud container node-pools delete POOL_NAME \
--cluster CLUSTER_NAME
Console
Para excluir um pool de nós, siga estas etapas:
Acesse a página do Google Kubernetes Engine no Console do Google Cloud.
Na lista de clusters, clique no nome do cluster Standard que você quer modificar.
Clique na guia Nós.
Na seção Pool de nós, clique em delete ao lado do pool que você quer excluir.
Quando solicitado a confirmar, clique em Excluir.
Migrar nós para um tipo de máquina diferente
Para saber mais sobre as diferentes abordagens para mover cargas de trabalho entre tipos de máquina, por exemplo, para migrar para um tipo de máquina mais recente, consulte Migrar nós para um tipo de máquina diferente.
Migrar cargas de trabalho entre pools de nós
Para migrar cargas de trabalho de um pool de nós para outro, consulte Migrar cargas de trabalho entre pools de nós. Por exemplo, use essas instruções se você estiver substituindo um pool de nós atual por um novo e quiser garantir que as cargas de trabalho sejam movidas dos nós antigos para os novos.
Resolver problemas
Para informações sobre solução de problemas, consulte Resolver problemas em pools de nós padrão e Resolver problemas no registro de nós.
A seguir
- Leia sobre como os pools de nós funcionam.
- Saiba mais sobre os pools de nós com provisionamento automático.
- Saiba como o GKE pode reparar nós não íntegros automaticamente.
- Saiba como configurar
kubelet
esysctl
usando a configuração do sistema do nó.