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].bootDiskSizeGB
ounodePools[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_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.
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óriospool-2
: incluivsphere.datastore
evsphere.tags
pool-3
: incluitaints
elabels
pool-4
: incluiosImageType
ebootDiskSizeGB
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_containerd
oucos
.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
nodePools
do 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.
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
nodePools
do 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 cluster
fornece 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 nodes
para obter o estado dos seus nós. - Para todos os nós que não estejam prontos, execute o comando
kubectl describe node NODE_NAME
para obter detalhes.
- Execute