Um conjunto de nós é um grupo de nós num cluster que têm a mesma configuração. Todos os nós no cluster têm de pertencer a um conjunto de nós. Existem três tipos de pools de nós num cluster do Google Distributed Cloud: plano de controlo, equilibrador de carga e pools de nós de trabalho.
Esta página descreve como verificar o estado dos conjuntos de nós de trabalho e como adicionar, atualizar e remover conjuntos de nós de trabalho.
Escolha uma ferramenta para gerir pools de nós
A forma como gere os conjuntos de nós depende do tipo de cluster e, para clusters de utilizadores, se o cluster é gerido pela API GKE On-Prem. Um cluster de utilizadores é gerido pela API GKE On-Prem se uma das seguintes condições for verdadeira:
O cluster foi criado na Google Cloud consola ou através da CLI Google Cloud (CLI gcloud), que configura automaticamente a API GKE On-Prem para gerir o cluster.
O cluster foi criado com o
bmctl
, mas foi configurado para ser gerido pela API GKE On-Prem.
Se a API GKE On-Prem estiver a gerir um cluster de utilizadores, pode usar a consola ou a CLI gcloud para gerir pools de nós. Se o cluster de utilizadores não for gerido pela API GKE On-Prem, use kubectl
na estação de trabalho de administração para gerir os conjuntos de nós. Também usa kubectl
para gerir node pools para todos os tipos de clusters que podem conter node pools de trabalho (híbridos, autónomos e clusters de utilizadores).
Se planeia usar a CLI gcloud, faça o seguinte num computador com a CLI gcloud instalada:
Inicie a sessão com a sua conta do Google
gcloud auth login
Atualize os componentes:
gcloud components update
Verifique o estado do nó
Antes de adicionar ou remover conjuntos de nós, verifique o estado dos nós e dos respetivos conjuntos de nós.
kubectl
Com kubectl
, pode obter o estado dos nós num espaço de nomes específico ou
em todo o cluster. O exemplo seguinte mostra o estado dos node pools no espaço de nomes do cluster cluster-abm-cluster
:
kubectl get nodepools.baremetal.cluster.gke.io -n cluster-abm-cluster
O sistema devolve 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 estados em que um nó pode estar. Cada linha na tabela é o número de nós por conjunto de nós em cada um dos estados dos nós.
Quando adiciona um nó, este tem inicialmente o estado Reconciling
enquanto o nó
é aprovisionado. Depois de o nó fazer parte do cluster, o estado do nó muda para Ready
.
Também pode verificar o estado dos nós no cluster executando o seguinte comando:
kubectl get nodes --kubeconfig=PATH_TO_KUBECONFIG
Consola
Na consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Selecione o Google Cloud projeto no qual o cluster de utilizadores se encontra.
Na lista de clusters, clique no nome do cluster e, de seguida, clique em Mais detalhes no painel Detalhes.
Clique no separador Nós.
É apresentada uma lista de conjuntos de nós.
CLI gcloud
Liste os node pools no cluster:
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
USER_CLUSTER_NAME
: O nome do cluster de utilizadores que contém os node pools.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: a localização Google Cloud associada ao cluster de utilizadores.
Descrever um node pool:
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 conjunto de nós.
Se precisar de mais informações sobre como diagnosticar os seus clusters, consulte o artigo Crie capturas de ecrã para diagnosticar clusters.
Adicione um novo conjunto de nós
kubectl
Tenha em atenção as seguintes regras quando adicionar um conjunto de nós a um cluster:
Um cluster de administrador pode conter um conjunto de nós do balanceador de carga e um conjunto de nós do plano de controlo, mas não pode conter um conjunto de nós de trabalho: a tentativa de adicionar um conjunto de nós de trabalho a um cluster de administrador produz um erro.
Um cluster só pode conter um único conjunto de nós do plano de controlo e um único conjunto de nós do equilibrador de carga. Não pode adicionar pools de nós adicionais do plano de controlo ou de equilíbrio de carga a um cluster.
Adiciona novos conjuntos de nós a um cluster criando um novo recurso nodepools.baremetal.cluster.gke.io
no cluster. No exemplo seguinte, é adicionado um novo conjunto de nós denominado "machine-learning-pool" ao manifesto. O novo conjunto de nós consiste em dois nós com os 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 num ficheiro denominado machine-learning-pool.yaml
e aplique a configuração ao cluster com o seguinte comando:
kubectl apply -f machine-learning-pool.yaml
Deve ter em consideração os seguintes factos quando adicionar um conjunto de nós a um cluster:
As configurações de
NodePool.spec.taints
eNodePool.spec.labels
são reconciliadas com os nós. Todas as restrições e etiquetas adicionadas diretamente aos nós são removidas. O plano de controlo não remove as contaminações e as etiquetas que adiciona diretamente durante o processo de sincronização. Para ignorar este passo de conciliação, pode anotar o nó combaremetal.cluster.gke.io/label-taint-no-sync
.O recurso do conjunto de nós tem de ser criado no mesmo espaço de nomes que o cluster associado, e o recurso do conjunto de nós tem de fazer referência ao nome do cluster no campo
spec.clusterName
.
Consola
Na consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Selecione o Google Cloud projeto no qual o cluster de utilizadores se encontra.
Na lista de clusters, clique no nome do cluster e, de seguida, clique em Mais detalhes no painel Detalhes.
Clique em
Adicionar conjunto de nós.Introduza um nome para o conjunto de nós.
No campo Nodes address 1, introduza o endereço IP da máquina do nó de trabalho.
Se tiver mais do que uma máquina de nó de trabalho para adicionar, clique em
Adicionar endereço.Opcionalmente, adicione etiquetas do Kubernetes e/ou taints do Kubernetes.
Clique em Criar.
O estado do conjunto de nós é apresentado no separador Nós. Pode ter de atualizar a página para ver um estado atualizado.
CLI 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 o seguinte:
NODE_POOL_NAME
: um nome à sua escolha para o node pool. O nome tem de:- Conter, no máximo, 40 carateres
- conter apenas carateres alfanuméricos minúsculos ou um hífen (
-
) - Começar com um caráter alfabético
- Terminar com um caráter alfanumérico
USER_CLUSTER_NAME
: o nome do cluster de utilizadores.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: A Google Cloud localização que especificou quando criou o cluster.NODE_POOL_CONFIG
: o caminho de um ficheiro de configuração que descreve o conjunto de nós. Por exemplo:nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 key2: value2 - nodeIP: 10.200.0.11 labels: key3: value3 key4: value4
Opcionalmente, pode especificar o seguinte:
--node-labels=KEY=VALUE,...
: uma lista separada por vírgulas de etiquetas do Kubernetes (pares de chave-valor) aplicadas a cada nó no conjunto.--node-taints=KEY=VALUE:EFFECT,...
Uma lista separada por vírgulas de Kubernetes taints
aplicado a cada nó no conjunto. As restrições são pares de chave-valor associados a um efeito. As restrições são usadas com tolerâncias para o agendamento de pods. Especifique um
dos seguintes para EFFECT
: NoSchedule
,
PreferNoSchedule
, NoExecute
.
--validate-only
Especifique esta flag se quiser validar a atualização, mas não fazer alterações.
Atualize um node pool
kubectl
Atualiza um node pool modificando o recurso nodepools.baremetal.cluster.gke.io
no cluster. Pode atualizar o recurso diretamente através de kubectl edit
ou atualizar o ficheiro YAML e usar kubectl apply
.
Consola
Na consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Selecione o Google Cloud projeto no qual o cluster de utilizadores se encontra.
Na lista de clusters, clique no nome do cluster e, de seguida, clique em Mais detalhes no painel Detalhes.
Clique no separador Nós.
Na lista, clique no conjunto de nós que quer atualizar.
Na página Detalhes do conjunto de nós, clique em
Editar.Altere as definições conforme necessário e clique em Guardar.
CLI gcloud
Opcionalmente, liste os node pools no cluster para obter o nome do node pool que quer atualizar.
gcloud container bare-metal node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
USER_CLUSTER_NAME
: O nome do cluster de utilizadores que contém os node pools.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: a localização Google Cloud associada ao cluster de utilizadores.
Execute o seguinte 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 o seguinte:
NODE_POOL_NAME
com o nome do conjunto de nós.NODE_CONFIG_FILE
: o caminho de um ficheiro de configuração que descreve o conjunto de nós. Por exemplo:
nodeConfigs: - nodeIP: 10.200.0.10 labels: key1: value1 - nodeIP: 10.200.0.11
Opcionalmente, pode especificar o seguinte:
--node-labels=KEY=VALUE,...
: uma lista separada por vírgulas de etiquetas do Kubernetes (pares de chave-valor) aplicadas a cada nó no conjunto.--node-taints=KEY=VALUE:EFFECT,...
Uma lista separada por vírgulas de Kubernetes taints. aplicados a cada nó no conjunto. As restrições são pares de chave-valor associados a um efeito. As restrições são usadas com tolerâncias para o agendamento de pods. Especifique uma das seguintes opções para EFFECT:NoSchedule
,PreferNoSchedule
,NoExecute
.--validate-only
Especifique esta flag se quiser validar a atualização, mas não fazer alterações.
Por 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
Remova um node pool
kubectl
Remove node pools com o comando kubectl delete
. Por exemplo, para remover o conjunto de nós adicionado na secção anterior, machine-learning-pool
, use o seguinte comando:
kubectl delete nodepool machine-learning-pool -n cluster-abm-cluster
Tenha em atenção que os conjuntos de nós do plano de controlo e os conjuntos de nós do equilibrador de carga são essenciais para a função de um cluster e, consequentemente, não podem ser removidos de um cluster.
Consola
Na consola, aceda à página Vista geral dos clusters do Google Kubernetes Engine.
Selecione o Google Cloud projeto no qual o cluster de utilizadores se encontra.
Na lista de clusters, clique no nome do cluster e, de seguida, clique em Mais detalhes no painel Detalhes.
Clique no separador Nodes (Nós) e, de seguida, clique no conjunto de nós que quer eliminar.
Clique em
Eliminar.Na caixa de diálogo de confirmação, introduza o nome do conjunto de nós e clique em Confirmar.
CLI gcloud
gcloud container bare-metal node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua o seguinte:
NODE_POOL_NAME
com o nome do conjunto de nós.USER_CLUSTER_NAME
: O nome do cluster de utilizadores que contém os node pools.FLEET_HOST_PROJECT_ID
: o ID do projeto no qual o cluster foi criado.LOCATION
: a localização Google Cloud associada ao cluster de utilizadores.
A remoção de um node pool de trabalho num cluster pode causar interrupções de pods. Se existir um PodDisruptionBudget (PDB), pode ser-lhe bloqueada a remoção de um conjunto de nós. Para mais informações sobre as políticas de interrupção de pods, consulte o artigo Remover nós bloqueados pelo orçamento de interrupção de pods.
O que se segue?
Se os requisitos da carga de trabalho mudarem depois de criar node pools, pode atualizar um node pool de nós de trabalho para adicionar ou remover nós. Para adicionar ou remover nós de um conjunto de nós de trabalho, consulte o artigo Adicione ou remova nós num cluster.