Esta página explica como os pools de nós funcionam no Google Kubernetes Engine (GKE).
Para saber como gerenciar pools de nós, consulte Como adicionar e gerenciar pools de nós.
Visão geral
Um pool de nós é um grupo de nós em um cluster, todos
com a mesma configuração. Os pools de nós usam uma especificação NodeConfig. Cada nó
no pool tem um rótulo de nó do Kubernetes, cloud.google.com/gke-nodepool
, que
tem o nome do pool de nós como valor.
Quando você cria um cluster, o número de nós e o tipo de nós especificados são usados para criar o primeiro pool de nós do cluster. Em seguida, você pode adicionar mais pools de nós de diferentes tamanhos e tipos ao seu cluster. Todos os nós de um determinado pool são idênticos entre si.
Por exemplo, é possível criar um pool de nós no seu cluster com SSDs locais, uma plataforma de CPU mínima, VMs do Spot, uma imagem de nó específica, tipos de máquina diferentes ou uma interface de rede virtual mais eficiente.
Os pools de nós personalizados são úteis quando é necessário agendar pods que exigem mais recursos que outros, como memória ou espaço em disco local. Se quiser mais controle sobre onde os pods são programados, use taints de nós.
É possível criar, atualizar e excluir pools de nós individualmente sem afetar todo o cluster. Por outro lado, não é possível configurar um único nó em um pool de nós, já que todas as alterações de configuração afetam todos os nós no pool.
Para redimensionar pools de nós em um cluster, adicione ou remova nós.
Por padrão, todos os novos pools de nós executam a mesma versão do Kubernetes que o plano de controle. Os pools de nós existentes podem receber upgrade manual ou automático. Em cada pool, também é possível executar várias versões de nodes do Kubernetes e atualizar de modo independente, além de destinar pools diferentes a implantações específicas.
Como implantar serviços em pools de nós específicos
Ao definir um Serviço, é possível controlar indiretamente em qual pool de nós ele é implantado. O pool de nós não depende da configuração do serviço, mas da configuração do pod.
É possível implantar explicitamente um pod em um pool de nós específico definindo um
nodeSelector
no manifesto do pod. Isso força um pod a ser executado apenas em nós desse pool. Para ver um exemplo, consulte Implantar um pod em um pool de nós específico.É possível especificar solicitações de recursos para os contêineres. O pod é executado apenas em nós que atendem às solicitações de recursos. Por exemplo, se a definição do pod incluir um contêiner que requer quatro CPUs, o serviço não selecionará pods em execução em nós com duas CPUs.
Nós em clusters regionais ou de várias zonas
Se você criou um cluster de várias zonas ou regional, todos os pools de nós serão replicados para essas zonas automaticamente. Qualquer novo pool de nós é criado automaticamente nessas zonas. Do mesmo modo, as exclusões também removem esses pools das zonas adicionais.
Esse fator multiplicador pode causar um consumo maior da cota do projeto para uma região específica quando os pools de nós são criados.
Como excluir os pools de nós
Quando você exclui um pool
de nós,
o GKE drena todos os nós no pool, removendo e
reprogramando todos os pods. O processo de diminuição envolve o GKE remover
pods em cada nó no pool de nós. Cada nó em um pool de nós é drenado
removendo pods com um período de encerramento otimizado alocado de MAX_POD
.
MAX_POD
é o
terminationGracePeriodSeconds
máximo
definido nos pods programados do nó, com um limite de uma hora.
As configurações de PodDisruptionBudget
não são mantidas durante a exclusão do pool de nós.
Se os pods tiverem seletores de nó específicos, poderão permanecer em uma condição não programável se nenhum outro nó no cluster cumprir os critérios.
No entanto, quando um cluster é excluído, o GKE não segue esse processo de encerramento normal dos nós, drenando-os. Se as cargas de trabalho
em execução em um cluster precisarem ser encerradas normalmente, use kubectl
drain
para limpá-las
antes de excluir o cluster.
Para excluir um pool de nós, consulte Excluir um pool de nós.
A seguir
- Saiba mais sobre a arquitetura de cluster no GKE.
- Saiba como adicionar e gerenciar pools de nós.
- Saiba como provisionar nós automaticamente.