Um pool de nós é um grupo de nós em um cluster que têm a mesma configuração. Todos os nós no GKE em Bare Metal precisam pertencer a um pool de nós. Há três tipos de pools de nós no GKE em Bare Metal: plano de controle, balanceador de carga e pools de nós de trabalho.
Nesta página, descrevemos como verificar o status dos pools de nós de trabalho e como adicionar, atualizar e remover os pools.
Escolha uma ferramenta para gerenciar pools de nós
A maneira como você gerencia pools de nós depende do tipo de cluster e dos clusters de usuário, se o cluster for gerenciado pela API Anthos On-Prem. Um cluster de usuário será gerenciado pela API Anthos On-Prem se uma das condições a seguir for verdadeira:
O cluster foi criado no console do Google Cloud ou usando a CLI do Google Cloud (CLI gcloud), que configura automaticamente a API Anthos On-Prem para gerenciar o cluster.
O cluster foi criado usando
bmctl
, mas foi configurado para ser gerenciado pela API Anthos On-Prem.
Se a API Anthos On-Prem estiver gerenciando um cluster de usuário, será possível usar o console ou a CLI gcloud para gerenciar pools de nós. Se o
cluster de usuário não for gerenciado pela API Anthos On-Prem, use kubectl
na estação de trabalho
do administrador para gerenciar pools de nós. Também é possível usar kubectl
para gerenciar pools de nós para todos os tipos de clusters que podem conter pools de nós de trabalho (clusters híbridos, independentes e de usuário).
Se você planeja usar a CLI gcloud, faça o seguinte em um computador que tenha a CLI gcloud instalada:
Faça login com sua Conta do Google
gcloud auth login
Atualize os componentes:
gcloud components update
Verificar o status do nó
Antes de adicionar ou remover pools de nós, verifique o status dos nós e os respectivos pools.
kubectl
Com o kubectl
, é possível receber o status dos nós em um namespace específico ou em todo o cluster. Veja no exemplo a seguir o status dos pools de nós no namespace cluster-abm-cluster
do cluster:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
O sistema retorna resultados semelhantes aos seguintes:
NAME READY RECONCILING STALLED UNDERMAINTENANCE UNKNOWN
abm-cluster 3 0 0 0 0
default-pool 2 0 0 0 0
backup-pool 3 0 0 0 0
Cada coluna na tabela indica os diferentes status em que um nó pode estar. Cada linha na tabela é o número de nós por pool em cada um dos status de nós.
Quando você adiciona um nó, inicialmente ele tem o status Reconciling
enquanto o nó
está provisionado. Depois que o nó fizer parte do cluster, o status do nó
mudará para Ready
.
Também é possível verificar o status dos nós no cluster executando o seguinte comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Console
No console, acesse a página de clusters do GKE Enterprise.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no nome dele e em Mais detalhes no painel Detalhes.
Clique na guia Nós.
Uma lista de pools de nós é exibida.
CLI da gcloud
Liste os pools de nós no cluster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua:
USER_CLUSTER_NAME
: o nome do cluster do usuário que contém os pools de nós.FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
Descreva um pool de nós:
gcloud container bare-metal node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua
NODE_POOL_NAME
pelo nome do pool de nós.
Veja como diagnosticar seus clusters em Criar snapshots para diagnosticar clusters.
Adicionar um novo pool de nós
kubectl
Lembre-se das seguintes regras ao adicionar um pool de nós a um cluster:
Um cluster de administrador pode conter um pool de nós do balanceador de carga e um pool de nós do plano de controle, mas não um pool de nós de trabalho: tentar adicionar um pool de nós de trabalho a um cluster de administrador produz um erro.
Um cluster pode conter apenas um único pool de nós do plano de controle e um único pool de nós do balanceador de carga. Não é possível adicionar um plano de controle extra ou pools de nós de balanceamento de carga a um cluster.
Para adicionar novos pools de nós a um cluster, crie um novo
recurso nodepools.baremetal.cluster.gke.io
no cluster. No exemplo a seguir, um novo pool de nós chamado "machine-learning-pool" é adicionado ao manifesto. O novo pool de nós consiste em dois nós com endereços IP 10.200.0.7
e 10.200.0.8
:
apiVersion: baremetal.cluster.gke.io/v1
kind: NodePool
metadata:
name: machine-learning-pool
namespace: cluster-abm-cluster
spec:
clusterName: abm-cluster
nodes:
- address: 10.200.0.7
- address: 10.200.0.8
taints:
- key: TAINT_KEY
value: TAINT_VALUE
effect: NoSchedule
labels:
key1: LABEL_1
key2: LABEL_2
Armazene a configuração em um arquivo chamado machine-learning-pool.yaml
e aplique a configuração ao cluster com o seguinte comando:
kubectl apply -f machine-learning-pool.yaml
Os seguintes fatores precisam ser considerados ao adicionar um pool de nós a um cluster:
As configurações
NodePool.spec.taints
eNodePool.spec.labels
são reconciliadas para nós. Todos os taints e rótulos que são adicionados diretamente aos nós são removidos. O plano de controle não remove os taints e os rótulos que você adiciona diretamente durante o processo de sincronização. Para ignorar essa etapa da reconciliação, anote o nó combaremetal.cluster.gke.io/label-taint-no-sync
.O recurso de pool de nós precisa ser criado no mesmo namespace do cluster associado e o recurso de pool de nós precisa se referir ao nome do cluster no campo
spec.clusterName
.
Console
No console do Google Cloud, acesse a página de clusters do GKE Enterprise.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no nome dele e em Mais detalhes no painel Detalhes.
Clique em
Adicionar pool de nós.Insira um nome para o pool de nós.
No campo Endereço de nós 1, insira o endereço IP da máquina de nó do worker.
Se você tiver mais de uma máquina de nó de trabalho para adicionar, clique em
Adicionar endereço.Se quiser, adicione rótulos do Kubernetes e/ou taints do Kubernetes.
Clique em Criar.
O status do pool de nós é exibido na guia "Nós". Talvez seja necessário atualizar a página para ver o novo status.
CLI da gcloud
gcloud container bare-metal node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_POOL_CONFIG
Substitua:
NODE_POOL_NAME
: um nome de sua escolha para o pool de nós. O nome precisa:- conter no máximo 40 caracteres
- conter apenas caracteres alfanuméricos minúsculos ou um hífen (
-
) - começam com um caractere alfabético
- terminar com um caractere alfanumérico.
USER_CLUSTER_NAME
: o nome do cluster do usuário.FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud que você especificou ao criar o cluster.NODE_POOL_CONFIG
: o caminho de um arquivo de configuração que descreve o pool de nós. Exemplo:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Também é possível especificar o seguinte:
--node-labels=KEY=VALUE,...
: uma lista separada por vírgulas de rótulos do Kubernetes (pares de chave-valor) aplicados a cada nó no pool.--node-taints=KEY=VALUE:EFFECT,...
Uma lista separada por vírgulas de taints do Kubernetes
aplicados a cada nó no pool. Os taints são pares de chave-valor associados a um efeito. Taints são usados com tolerâncias para a programação de pods. Especifique um dos
seguintes para EFFECT
: NoSchedule
, PreferNoSchedule
,
NoExecute
.
--validate-only
: especifique essa sinalização se quiser validar a atualização, mas não fizer mudanças.
Atualizar um pool de nós
kubectl
Para atualizar um pool de nós, modifique o recurso nodepools.baremetal.cluster.gke.io
no cluster. É possível atualizar o recurso diretamente usando kubectl edit
ou atualizar o arquivo YAML e usar kubectl apply
.
Console
No console, acesse a página de clusters do GKE Enterprise.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no nome dele e em Mais detalhes no painel Detalhes.
Clique na guia Nós.
Na lista, clique no pool de nós que você quer atualizar.
Na página Detalhes do pool de nós, clique em
Editar.Altere as configurações conforme necessário e clique em Salvar.
CLI da gcloud
Opcionalmente, liste os pools de nós no cluster para receber o nome do pool de nós que você quer atualizar.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua:
USER_CLUSTER_NAME
: o nome do cluster do usuário que contém os pools de nós.FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
Execute este comando:
gcloud container bare-metal node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --node-configs-from-file=NODE_CONFIG_FILE
Substitua:
NODE_POOL_NAME
pelo nome do pool de nós.NODE_CONFIG_FILE
: o caminho de um arquivo de configuração que descreve o pool de nós. Exemplo:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Também é possível especificar o seguinte:
--node-labels=KEY=VALUE,...
: uma lista separada por vírgulas de rótulos do Kubernetes (pares de chave-valor) aplicados a cada nó no pool.--node-taints=KEY=VALUE:EFFECT,...
Uma lista separada por vírgulas de taints do Kubernetes aplicados a cada nó no pool. Os taints são pares de chave-valor associados a um efeito. Taints são usados com tolerâncias para a programação de pods. Especifique um dos seguintes para EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
: especifique essa sinalização se quiser validar a atualização, mas não fizer mudanças.
Exemplo:
gcloud container bare-metal node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --node-configs-from-file=node-pool-config.yaml \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute
Remover um pool de nós
kubectl
Remova os pools de nós com kubectl delete
. Por exemplo, para remover o pool
de nós adicionado na seção anterior, machine-learning-pool
, use o seguinte comando:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Lembre-se de que os pools de nós do plano de controle e os pools de nós do balanceador de carga são essenciais para a função de um cluster e, consequentemente, não podem ser removidos de um cluster.
Console
No console do Google Cloud, acesse a página de clusters do GKE Enterprise.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de clusters, clique no nome dele e em Mais detalhes no painel Detalhes.
Clique na guia Nós e, em seguida, clique no pool de nós que você quer excluir.
Clique em
Excluir.Na caixa de diálogo de confirmação, insira o nome do pool de nós e clique em Confirmar.
CLI da gcloud
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua:
NODE_POOL_NAME
pelo nome do pool de nós.USER_CLUSTER_NAME
: o nome do cluster do usuário que contém os pools de nós.FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster foi criado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
A remoção de um pool de nós de trabalho em um cluster pode causar interrupções no pod. Se houver um Orçamento de interrupção de pod (PDB, na sigla em inglês) em vigor, você poderá ser impedido de remover um pool de nós. Para mais informações sobre políticas de interrupção de pods, consulte Como remover nós bloqueados pelo Orçamento de interrupção de pod.
A seguir
Se os requisitos da carga de trabalho mudarem após a criação dos pools de nós, vai ser possível atualizar um pool de nós de trabalho para adicionar ou remover nós. Para adicionar ou remover nós de um pool de nós de trabalho, consulte Adicionar ou remover nós de um cluster.