Como adicionar ou remover nós em um cluster

Nos clusters do Anthos em bare metal, você adiciona ou remove nós em um cluster editando as definições do pool de nós do cluster. Use o comando kubectl para alterar essas definições.

Há três tipos de pools de nós nos clusters do Anthos em bare metal: plano de controle, balanceador de carga e pools de nós de trabalho. Você edita os nós do plano de controle e do balanceador de carga por meio das definições nos recursos de cluster associados e edita diretamente as definições do pool de nós de trabalho.

Como visualizar o status do nó

Também é possível ver o status dos nós e os respectivos pools com o comando kubectl get.

Por exemplo, o comando a seguir mostra o status dos pools de nós no namespace do cluster my-cluster:

  kubectl -n my-cluster get nodepools.baremetal.cluster.gke.io
  

O sistema retorna resultados semelhantes aos seguintes:

  NAME                    READY   RECONCILING   STALLED   UNDERMAINTENANCE   UNKNOWN
  my-cluster              3       0             0         0                  0
  my-cluster-lb           2       0             0         0                  0
  np1                     3       0             0         0                  0

Se você precisar de mais informações sobre como diagnosticar os clusters, consulte Como diagnosticar e redefinir clusters.

Como alterar nós

A maioria das alterações de nó é especificada no arquivo de configuração do cluster, que depois é aplicado ao cluster. Recomendamos que você use o arquivo de configuração do cluster como a principal origem para atualizar o cluster É uma prática recomendada armazenar o arquivo de configuração em um sistema de controle de versões que rastreie as alterações para fins de solução de problemas. O comando bmctl update é compatível apenas com clusters independentes. Para clusters de administrador, de usuários e híbridos, use kubectl apply para atualizar o cluster com as alterações do pool de nós.

Os clusters do Anthos no arquivo de configuração do cluster bare metal incluem uma seção de cabeçalho com informações de credenciais. As entradas de credenciais e o restante do arquivo de configuração são YAML válidos, mas as entradas de credenciais não são válidas para o recurso do cluster. Remova as entradas do caminho da chave de credencial, como gcrKeyPath e sshPrivateKeyPath, antes de usar kubectl apply. Use bmctl update credentials para atualizações de credenciais.

Como alternativa, use kubectl edit para modificar o recurso do cluster diretamente. Exemplo:

  kubectl edit cluster -n CLUSTER_NAMESPACE CLUSTER_NAME

As seções a seguir descrevem algumas diferenças importantes para atualizar tipos de nós específicos.

Nós do plano de controle e do balanceador de carga

As especificações do pool de nós do plano de controle e do balanceador de carga para clusters do Anthos em bare metal são especiais. Essas especificações declaram e controlam os recursos essenciais do cluster. A fonte canônica desses recursos é a respectiva seção no arquivo de configuração do cluster.

  • spec.controlPlane.nodePoolSpec
  • spec.LoadBalancer.nodePoolSpec

Para adicionar ou remover nós do plano de controle ou do balanceador de carga, edite a matriz de endereços em nodes na seção correspondente do arquivo de configuração do cluster.

Em uma configuração de alta disponibilidade (HA, na sigla em inglês), é necessário um número ímpar de pools de nós do plano de controle (três ou mais) para estabelecer um quórum. Assim, se um plano de controle falhar, outros assumirão o controle. Se você tiver um número par de nós temporariamente durante a adição ou remoção de nós para manutenção ou substituição, sua implantação manterá a alta disponibilidade, desde que você tenha quórum suficiente.

Nós de trabalho

É possível adicionar ou remover nós de trabalho diretamente com o comando kubectl. Os pools de nós de trabalho precisam ter pelo menos um nó pretendido.

No exemplo a seguir, o comando exclui um pool de nós chamado np1, em que a variável do namespace do cluster é my-cluster:

  kubectl -n my-cluster delete nodepool np1
  

Da mesma forma, os pools de nós podem ser redimensionados editando a matriz de endereços spec.nodes.

Quando você remove nós de um cluster, eles primeiro são drenados de todos os pods. Os nós não serão removidos do cluster se não for possível reprogramar os pods em outros nós. A remoção de nós remove apenas o nó do plano de controle. O conteúdo do nó não é redefinido.

O comando kubectl edit a seguir permite editar e confirmar alterações no namespace do cluster my-cluster e no pool de nós np1:

  kubectl -n my-cluster edit nodepool np1