Quando cria um cluster de utilizadores, tem de configurar, pelo menos, um conjunto de nós, que é um grupo de nós que têm todos a mesma configuração. Depois de criar o cluster, pode adicionar novos node pools, atualizar as definições dos node pools e eliminar node pools.
Escolha uma ferramenta para gerir pools de nós
A forma como cria, atualiza e elimina pools de nós depende de o cluster ser 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 - gkectl, 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 gkectl na estação de trabalho de administração para gerir os conjuntos de nós.
Se planeia usar a CLI gcloud, faça o seguinte num computador com a CLI gcloud instalada:
- Inicie sessão com a sua Conta Google - gcloud auth login 
- Atualize os componentes: - gcloud components update 
Adicione um node pool
Se o cluster for gerido pela API GKE On-Prem, pode usar a consola ou a CLI gcloud para adicionar um conjunto de nós. No entanto, tem de usar gkectl na sua estação de trabalho de administração para configurar as seguintes definições do conjunto de nós:
- Windows para o tipo de imagem do SO
- Armazenamento de dados do vSphere
- Etiquetas do vSphere Se quiser anexar etiquetas a todas as VMs num node pool, a sua conta de utilizador do vCenter tem de ter estes privilégios de etiquetagem do vSphere: - Etiquetagem do vSphere.Atribua ou desatribua uma etiqueta do vSphere
- Etiquetagem do vSphere.Atribua ou retire a atribuição de uma etiqueta do vSphere a um objeto (vSphere 7)
 
Antes de adicionar outro conjunto de nós, verifique se existem endereços IP suficientes disponíveis no cluster.
gkectl
Faça o seguinte na estação de trabalho do administrador:
- No seu ficheiro de configuração do cluster de utilizadores, preencha a secção - nodePools.- Tem de especificar os seguintes campos: - nodePools.[i].name
- nodePools[i].cpus
- nodePools.[i].memoryMB
- nodePools.[i].replicas
 - Os seguintes campos são opcionais. Se não incluir - nodePools[i].bootDiskSizeGBou- nodePools[i].osImageType, são usados os valores predefinidos.- nodePools[i].labels
- nodePools[i].taints
- nodePools[i].bootDiskSizeGB
- nodePools[i].osImageType
- nodePools[i].vsphere.datastore
- nodePools[i].vsphere.tags
 
- Execute o seguinte comando: - gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG - Substitua o seguinte: - ADMIN_CLUSTER_KUBECONFIGcom o caminho do ficheiro kubeconfig para o cluster de administrador.
- USER_CLUSTER_CONFIGcom o caminho do ficheiro de configuração do cluster de utilizadores.
 
Exemplo de configuração
Na configuração de exemplo seguinte, existem quatro conjuntos de nós, cada um com atributos diferentes:
- pool-1: apenas são especificados os atributos mínimos obrigatórios
- pool-2: inclui- vsphere.datastoree- vsphere.tags
- pool-3: inclui- taintse- labels
- pool-4: inclui- osImageTypee- bootDiskSizeGB
nodePools:
- name: pool-1
  cpus: 4
  memoryMB: 8192
  replicas: 5
- name: pool-2
  cpus: 8
  memoryMB: 16384
  replicas: 3
  vsphere:
    datastore: my_datastore
    tags:
    - category: "purpose"
      name: "testing"
- name: pool-3
  cpus: 4
  memoryMB: 8192
  replicas: 5
  taints:
    - key: "example-key"
      effect: NoSchedule
  labels:
    environment: production
    app: nginx
- name: pool-4
  cpus: 4
  memoryMB: 8192
  replicas: 5
  osImageType: cos
  bootDiskSizeGB: 40
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 Ver detalhes no painel Detalhes. 
- Clique em Adicionar conjunto de nós. 
- Configure o node pool: - Introduza o nome do conjunto de nós.
- Introduza o número de vCPUs para cada nó no conjunto (mínimo de 4 por worker do cluster de utilizadores).
- Introduza o tamanho da memória em mebibytes (MiB) para cada nó no conjunto (mínimo de 8192 MiB por nó de trabalho do cluster de utilizadores e tem de ser um múltiplo de 4).
- No campo Nodes, introduza o número de nós no conjunto (mínimo de 3).
- Selecione o tipo de imagem do SO: Ubuntu Containerd ou COS. 
- Introduza o tamanho do disco de arranque em gibibytes (GiB) (o valor predefinido é 40 GiB). 
 
- Na secção Metadados do node pool (opcional), se quiser adicionar etiquetas do Kubernetes e restrições, faça o seguinte: - Clique em + Adicionar etiquetas do Kubernetes. Introduza a Chave e o Valor da etiqueta. Repita estes passos conforme necessário.
- Clique em + Adicionar contaminação. Introduza a Chave, o Valor e o Efeito da contaminação. Repita estes passos conforme necessário.
 
- Clique em Criar. 
- A Google Cloud consola apresenta Estado do cluster: alterações em curso. Clique em Mostrar detalhes para ver a condição do estado do recurso e as mensagens de estado. 
CLI gcloud
Execute o seguinte comando para criar um node pool:
gcloud container vmware node-pools create NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --image-type=IMAGE_TYPE \ --boot-disk-size=BOOT_DISK_SIZE \ --cpus=vCPUS \ --memory=MEMORY \ --replicas=NODES
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 no qual o node pool vai ser criado.
- FLEET_HOST_PROJECT_ID: o ID do projeto no qual o cluster está registado.- LOCATION: a localização Google Cloud associada ao cluster de utilizadores.
- IMAGE_TYPE: O tipo de imagem do SO a executar nas VMs no node pool. Defina uma das seguintes opções:- ubuntu_containerdou- cos.
- BOOT_DISK_SIZE: O tamanho do disco de arranque em gibibytes (GiB) para cada nó no conjunto. O mínimo é de 40 GiB.
- vCPUs: o número de vCPUs para cada nó no conjunto de nós. O mínimo é 4.
- MEMORY: o tamanho da memória em mebibytes (MiB) para cada nó no conjunto. O mínimo é de 8192 MiB por nó de trabalho do cluster de utilizadores e o valor tem de ser um múltiplo de 4.
- NODES: o número de nós no node pool. O mínimo é 3.
 - Por exemplo: - gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 - Opcionalmente, pode especificar o seguinte: - --enable-load-balancer: apenas relevante para o balanceador de carga do MetalLB. Se especificado, permite que o altifalante do MetalLB seja executado nos nós no conjunto. Tem de ter, pelo menos, um conjunto de nós ativado para o equilibrador de carga do MetalLB.
- --image=IMAGE: nome da imagem do SO no vCenter.
- --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 aplicadas 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.
 - Por exemplo: - gcloud container vmware node-pools create default-pool \ --cluster=user-cluster-1 \ --location=us-west1 \ --image-type=ubuntu_containerd \ --boot-disk-size=40 \ --cpus=8 \ --memory=8192 \ --replicas=5 \ --node-taints=key1=val1:NoSchedule,key2=val2:NoExecute- Para obter informações sobre outras flags opcionais, consulte a referência gcloud. 
Atualize um node pool
Quando aumenta o número de réplicas, o Google Distributed Cloud adiciona o número necessário de nós ao cluster de utilizadores e, quando diminui o número de réplicas, os nós são removidos. Alterar o número de réplicas de um conjunto de nós não interrompe as cargas de trabalho. Certifique-se de que tem endereços IP disponíveis se aumentar o número de réplicas.
Se atualizar qualquer outro campo do node pool, isto aciona uma atualização contínua no cluster. Numa atualização contínua, o Google Distributed Cloud cria um novo nó e, em seguida, elimina um nó antigo. Este processo é repetido até todos os nós antigos terem sido substituídos por novos nós. Este processo não causa tempo de inatividade, mas o cluster tem de ter um endereço IP adicional disponível para utilização durante a atualização.
Suponhamos que um node pool tem N nós no final de uma atualização. Em seguida, tem de ter, pelo menos, N + 1 endereços IP disponíveis para os nós nesse conjunto. Isto significa que, se estiver a redimensionar um cluster adicionando nós a um ou mais conjuntos, tem de ter, pelo menos, mais um endereço IP do que o número total de nós que vão estar em todos os conjuntos de nós do cluster no final do redimensionamento. Para mais informações, consulte o artigo Verifique se existem endereços IP suficientes disponíveis.
Para atualizar um node pool num cluster de utilizador:
gkectl
- Modifique os valores dos campos que quer alterar na secção - nodePoolsdo ficheiro de configuração do cluster de utilizadores.
- Atualize o cluster: - gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG - Substitua o seguinte: - ADMIN_CLUSTER_KUBECONFIGcom o caminho do ficheiro kubeconfig para o cluster de administrador.
- USER_CLUSTER_CONFIGcom o caminho do ficheiro de configuração do cluster de utilizadores.
 
Atualize o osImageType usado por um node pool
Para atualizar um node pool para usar um osImageType diferente, tem de usar a linha de comandos. Para alterar o osImageType usado por um node pool, atualize o ficheiro de configuração do node pool, como mostrado no exemplo seguinte, e execute gkectl update cluster.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Consola
Só pode atualizar os seguintes campos através da consola:
- Número de réplicas
- Memória
- Número de vCPUs
Para atualizar outros campos, use a CLI gcloud ou gkectl.
- 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 Ver detalhes no painel Detalhes. 
- Clique no separador Nós. 
- Clique no nome do conjunto de nós que quer modificar. 
- Clique em Editar junto ao campo que quer modificar e clique em Concluído. 
- Clique em para voltar à página anterior. 
- A Google Cloud consola apresenta Estado do cluster: alterações em curso. Clique em Mostrar detalhes para ver a condição do estado do recurso e as mensagens de estado. 
CLI gcloud
- Opcionalmente, liste os conjuntos de nós para obter o nome do conjunto de nós que quer atualizar: - gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION 
- Execute o seguinte comando para atualizar o node pool: - gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ... - Substitua o seguinte: - NODE_POOL_NAME: O nome do node pool a atualizar.
- USER_CLUSTER_NAME: O nome do cluster de utilizadores que contém o conjunto de nós.
- LOCATION: a localização Google Cloud associada ao cluster de utilizadores.
- ATTRIBUTE_TO_UPDATE: uma ou mais flags para atualizar os atributos do conjunto de nós. Por exemplo, para alterar o número de vCPUs e nós no conjunto, execute o seguinte comando.
 - gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6- Para obter informações sobre os atributos do conjunto de nós que pode atualizar, consulte a referência gcloud. 
Valide as alterações
Para verificar se os conjuntos de nós foram criados ou atualizados conforme previsto, inspecione os nós do cluster:
gkectl
Execute o seguinte comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Se precisar de reverter as alterações, edite o ficheiro de configuração do cluster e
execute gkectl update 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 Ver detalhes no painel Detalhes. 
- Clique no separador Nós. 
- Clique no nome do conjunto de nós que quer ver. 
CLI gcloud
Execute o seguinte comando:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Elimine um node pool
Embora possa eliminar conjuntos de nós, o cluster de utilizadores tem de ter, pelo menos, um conjunto de nós. A eliminação de um node pool provoca a remoção imediata dos nós do pool, independentemente de esses nós estarem a executar cargas de trabalho.
Para eliminar um conjunto de nós de um cluster de utilizadores:
gkectl
- Certifique-se de que não existem cargas de trabalho em execução nos nós afetados. 
- Remova a respetiva definição da secção - nodePoolsdo ficheiro de configuração do cluster de utilizadores.
- Atualize o cluster: - gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG - Substitua o seguinte: - [ADMIN_CLUSTER_KUBECONFIG]com o caminho do ficheiro kubeconfig para o cluster de administrador.
- [USER_CLUSTER_CONFIG]com o caminho do ficheiro de configuração do cluster de utilizadores.
 
Consola
- Certifique-se de que não existem cargas de trabalho em execução nos nós afetados. 
- 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 Ver detalhes no painel Detalhes. 
- Clique no separador Nós. 
- Clique no nome do conjunto de nós que quer eliminar. 
- Clique em Eliminar. 
- Clique em para voltar à página anterior. 
- A Google Cloud consola apresenta Estado do cluster: alterações em curso. Clique em Mostrar detalhes para ver a condição do estado do recurso e as mensagens de estado. 
CLI gcloud
- Opcionalmente, liste os conjuntos de nós para obter o nome do conjunto de nós que quer eliminar: - gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION 
- Execute o seguinte comando para eliminar o conjunto de nós: - gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION - Substitua o seguinte: - NODE_POOL_NAME: O nome do node pool a eliminar.
- USER_CLUSTER_NAME: O nome do cluster de utilizadores que contém o conjunto de nós.
- LOCATION: a localização Google Cloud associada ao cluster de utilizadores.
 
Resolução de problemas
- Em geral, o comando - gkectl update clusterfornece detalhes quando falha. Se o comando for bem-sucedido e não vir os nós, pode resolver problemas com o guia Diagnosticar problemas do cluster.
- É possível que existam recursos de cluster insuficientes, como a falta de endereços IP disponíveis durante a criação ou a atualização do conjunto de nós. Consulte o tópico Redimensionar um cluster de utilizadores para ver detalhes sobre como verificar se os endereços IP estão disponíveis. 
- Também pode rever o artigo Resolva problemas de atualização do Google Distributed Cloud. 
- Não avança para além de - Creating node MachineDeployment(s) in user cluster….- Pode demorar algum tempo a criar ou atualizar os pools de nós no cluster de utilizadores. No entanto, se o tempo de espera for extremamente longo e suspeitar que algo pode ter falhado, pode executar os seguintes comandos: - Execute kubectl get nodespara obter o estado dos seus nós.
- Para todos os nós que não estejam prontos, execute o comando
kubectl describe node NODE_NAMEpara obter detalhes.
 
- Execute