Sobre pools de nós


Esta página explica como os pools de nós funcionam no Google Kubernetes Engine (GKE). Um pool de nós é um grupo de nós em um cluster, que têm a mesma configuração. No modo GKE Standard, você pode escolher entre várias opções para que seus pools de nós atendam às necessidades da carga de trabalho. Se você escolher usar o Autopilot, não vai precisar configurar os pools de nós: o GKE gerencia os nós para você.

Para saber mais sobre como criar clusters no modo padrão, consulte Criar um cluster regional e Criar um cluster zonal. Para saber como gerenciar pools de nós em clusters padrão, consulte Adicionar e gerenciar pools de nós.

Visão geral

Um pool de nós é um grupo de nós em um cluster, que têm 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 no modo padrão, o número e o tipo de nós especificados são usados para criar o primeiro pool de nós do cluster. Por padrão, esse primeiro pool de nós (conhecido como o pool de nós padrão) consiste em três nós em cada uma das zonas de computação do cluster, com a imagem de nó cos_containerd padrão e um tipo de máquina de uso geral. É possível especificar várias propriedades para o pool de nós, dependendo dos requisitos da carga de trabalho. Por exemplo, é possível criar um pool de nós no cluster com SSDs locais, uma plataforma de CPU mínima, VMs do Spot, uma imagem de nó diferente, tipos de máquina diferentes ou uma interface de rede virtual mais eficiente.

Em seguida, você pode adicionar mais pools de nós de diferentes tamanhos e tipos ao cluster. Todos os nós de um determinado pool são idênticos entre si.

Os pools de nós personalizados são úteis quando você precisa agendar pods que exigem mais recursos que outros, como mais memória ou mais espaço em disco local. Se você precisar de mais controle sobre onde os pods são programados, use os taints do nó.

É 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 mudanças 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 atuais podem ser atualizados manualmente ou automaticamente. Também é possível executar várias versões de nós do Kubernetes em cada pool de nós no cluster, atualizar cada pool de nós de forma independente e direcionar pools de nós diferentes para 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.

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 sã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