Ao criar um cluster de usuário, você precisa configurar pelo menos um pool de nós, que é um grupo de nós com a mesma configuração. Após a criação do cluster, é possível adicionar novos pools de nós, atualizar as configurações dele e excluir pools de nós.
Escolher uma ferramenta para gerenciar pools de nós
A maneira de criar, atualizar e excluir pools de nós é diferente quando o cluster é gerenciado pela API GKE On-Prem. Um cluster de usuário é gerenciado pela API GKE On-Prem quando uma destas condições é verdadeira:
O cluster foi criado no console do Google Cloud ou usando a CLI do Google Cloud (gcloud CLI), que configura automaticamente a API GKE On-Prem para gerenciar o cluster.
O cluster foi criado usando
gkectl
, mas foi configurado para ser gerenciado pela API GKE On-Prem.
Se a API GKE On-Prem estiver gerenciando um cluster de usuário, será possível usar o
console ou a gcloud CLI para gerenciar pools de nós. Se o
cluster de usuário não for gerenciado pela API GKE On-Prem, use gkectl
na estação de trabalho
do administrador para gerenciar pools de nós.
Para usar a gcloud CLI, faça o seguinte em um computador com a gcloud CLI instalada:
Faça login com sua Conta do Google
gcloud auth login
Atualize os componentes:
gcloud components update
Adicionar um pool de nós
Se o cluster for gerenciado pela API GKE On-Prem, será possível usar o
console ou a gcloud CLI para adicionar um pool de nós. No entanto,
é necessário usar gkectl
na estação de trabalho do administrador para definir as seguintes
configurações do pool de nós:
- Windows para o tipo de imagem do SO
- Repositório de dados do vSphere
tags vSphere Se você quiser anexar tags a todas as VMs em um pool de nós, sua conta de usuário do vCenter precisa ter estes privilégios de inclusão de tag do vSphere:
- "vSphere Tagging.Assign" ou "Unassign vSphere Tag"
- "vSphere Tagging.Assign" ou "Unassign vSphere Tag" no objeto (vSphere 7)
Antes de adicionar outro pool de nós, verifique se endereços IP suficientes estão disponíveis no cluster.
gkectl
Faça o seguinte na estação de trabalho do administrador:
No arquivo de configuração do cluster de usuário, preencha a seção
nodePools
.É necessário especificar os seguintes campos:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Os seguintes campos são opcionais. Se você não incluir
nodePools[i].bootDiskSizeGB
ounodePools[i].osImageType
, os valores padrão serão usados.nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Execute este comando:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG
pelo caminho do arquivo kubeconfig para o cluster de administrador;USER_CLUSTER_CONFIG
é o caminho do arquivo de configuração do cluster de usuário.
Exemplo de configuração
No exemplo de configuração a seguir, há quatro pools de nós, cada um com atributos diferentes:
pool-1
: somente os atributos mínimos necessários são especificadospool-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
Console
No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.
Clique em
Adicionar pool de nós.Configure o pool de nós:
- Digite o Nome do pool de nós.
- Insira o número de vCPUs de cada nó no pool (mínimo de 4 por worker do cluster de usuário)
- Insira o tamanho da memória em mebibytes (MiB) para cada nó no pool (mínimo de 8.192 MiB por nó de trabalho do cluster de usuário, e precisa ser um múltiplo de 4).
- No campo Nodes, insira o número de nós no pool (mínimo de três).
Selecione o tipo de imagem do SO: Ubuntu Containerd ou COS.
Digite Tamanho do disco de inicialização em gibibytes (GiB). O padrão é 40 GiB.
Na seção Metadados do pool de nós (opcional), se você quiser adicionar rótulos e taints do Kubernetes, faça o seguinte:
- Clique em + Adicionar rótulos do Kubernetes. Insira a Chave e o Valor do rótulo. Repita quantas vezes forem necessárias.
- Clique em + Adicionar taint. Insira Key, Value e Effect para o taint. Repita quantas vezes forem necessárias.
Clique em Criar.
O console do Google Cloud exibe Status do cluster: alterações em andamento. Clique em Mostrar detalhes para ver a Condição do status do recurso e as Mensagens de status.
CLI da gcloud
Execute o comando a seguir para criar um pool de nós:
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:
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 de usuários em que o pool de nós será criado.
FLEET_HOST_PROJECT_ID
: o ID do projeto em que o cluster está registrado.LOCATION
: o local do Google Cloud associado ao cluster de usuário.IMAGE_TYPE
: o tipo de imagem do SO a ser executado nas VMs no pool de nós Defina comoubuntu_containerd
oucos
.BOOT_DISK_SIZE
: o tamanho do disco de inicialização em gibibytes (GiB) para cada nó no pool. O mínimo é de 40 GiB.vCPUs
: o número de CPUs de cada nó no pool de nós. O mínimo é 4.MEMORY
: o tamanho da memória em mebibytes (MiB) para cada nó no pool. O mínimo é 8.192 MiB por nó de trabalho do cluster de usuário, e o valor precisa ser um múltiplo de 4.NODES
: o número de nós no pool de nós. O mínimo é 3.
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
Também é possível especificar o seguinte:
--enable-load-balancer
: relevante apenas para o balanceador de carga MetalLB. Se especificado, permite que o alto-falante do MetalLB seja executado nos nós no pool. Pelo menos um pool de nós precisa estar ativado para o balanceador de carga do MetalLB.--image=IMAGE
: nome da imagem do SO no vCenter.--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
.
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 mais informações sobre outras sinalizações opcionais, consulte a referência do gcloud.
Atualizar um pool de nós
Quando você aumenta o número de réplicas, o Google Distributed Cloud adiciona o número necessário de nós ao cluster de usuário e, quando você diminui o número de réplicas, os nós são removidos. Alterar o número de réplicas de um pool de nós não interrompe as cargas de trabalho. Verifique se você tem endereços IP disponíveis ao aumentar o número de réplicas.
Se você atualizar qualquer outro campo do pool de nós, isso acionará uma atualização gradual no cluster. Em uma atualização gradual, o Google Distributed Cloud cria um novo nó e, depois, exclui um antigo. Esse processo é repetido até que todos os nós antigos sejam substituídos por novos nós. Esse processo não causa inatividade, mas o cluster precisa ter um endereço IP extra disponível para usar durante a atualização.
Suponha que um pool de nós tenha N nós no final de uma atualização. Assim, será preciso ter pelo menos N + 1 endereços IP disponíveis para os nós no pool. Isso significa que, se você estiver redimensionando um cluster adicionando nós a um ou mais pools, precisará ter pelo menos um endereço IP a mais do que o número total de nós que estará em todos os pools de nós do cluster no final do redimensionamento. Saiba mais em Verificar se endereços IP suficientes estão disponíveis.
Para atualizar um pool de nós em um cluster de usuário:
gkectl
Modifique os valores dos campos que você quer alterar na seção
nodePools
do arquivo de configuração do cluster de usuário.Atualize o cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG
pelo caminho do arquivo kubeconfig para o cluster de administrador;USER_CLUSTER_CONFIG
é o caminho do arquivo de configuração do cluster de usuário.
Atualizar o osImageType
usado por um pool de nós
Para atualizar um pool de nós para usar um osImageType
diferente, use a
linha de comando. Para alterar o osImageType
usado por um pool de nós, atualize o
arquivo de configuração do pool de nós, conforme mostrado no exemplo a seguir, e execute
gkectl update cluster
.
nodePools: - name: np-1 cpus: 4 memoryMB: 8192 replicas: 3 osImageType: ubuntu_containerd
Console
Só é possível atualizar os seguintes campos no console:
- Número de réplicas
- Memória
- Número de vCPUs
Para atualizar outros campos, use a gcloud CLI ou gkectl
.
No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.
Clique na guia Nós.
Clique no nome do pool de nós que você quer modificar.
Clique em
Editar ao lado do campo que você quer modificar e clique em Concluído.Clique em
para voltar à página anterior.O console do Google Cloud exibe Status do cluster: alterações em andamento. Clique em Mostrar detalhes para ver a Condição do status do recurso e as Mensagens de status.
CLI da gcloud
Se quiser, liste os pools de nós para receber o nome do pool que você quer atualizar:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Execute este comando para atualizar o pool de nós:
gcloud container vmware node-pools update NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION \ --ATTRIBUTE_TO_UPDATE \ ...
Substitua:
NODE_POOL_NAME
: o nome do pool de nós a ser atualizado;USER_CLUSTER_NAME
: o nome do cluster do usuário que contém o pool de nós.LOCATION
: o local do Google Cloud associado ao cluster de usuário.ATTRIBUTE_TO_UPDATE
: uma ou mais sinalizações para atualizar os atributos do pool de nós. Por exemplo, para alterar o número de vCPUs e nós no pool, execute o comando a seguir.
gcloud container vmware node-pools update default-pool \ --cluster=user-cluster-1 \ --project=example-project-12345 --location=us-west1 \ --cpus=10 \ --replicas=6
Para informações sobre os atributos do pool de nós que você pode atualizar, consulte a referência do gcloud.
Verificar as alterações
Para verificar se os pools de nós foram criados ou atualizados conforme o esperado, inspecione os nós do cluster:
gkectl
Execute este comando:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes -o wide
Se você precisar reverter as alterações, edite o arquivo de configuração do cluster e
execute gkectl update cluster
.
Console
No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.
Clique na guia Nós.
Clique no nome do pool de nós que você quer ver.
CLI da gcloud
Execute este comando:
gcloud container vmware node-pools describe NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Excluir um pool de nós
Embora seja possível excluir pools de nós, seu cluster de usuário precisa ter pelo menos um pool de nós. A exclusão de um pool de nós causa a remoção imediata dos nós do pool, mesmo que eles estejam executando cargas de trabalho.
Para excluir um pool de nós de um cluster de usuário:
gkectl
Confira se não há cargas de trabalho em execução nos nós afetados.
Remova a definição da seção
nodePools
do arquivo de configuração do cluster de usuário.Atualize o cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua:
[ADMIN_CLUSTER_KUBECONFIG]
pelo caminho do arquivo kubeconfig para o cluster de administrador;[USER_CLUSTER_CONFIG]
é o caminho do arquivo de configuração do cluster de usuário.
Console
Confira se não há cargas de trabalho em execução nos nós afetados.
No console, acesse a página Visão geral dos clusters do Google Kubernetes Engine.
Selecione o projeto do Cloud em que o cluster de usuário está.
Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.
Clique na guia Nós.
Clique no nome do pool de nós que você quer excluir.
Clique em
Excluir.Clique em
para voltar à página anterior.O console do Google Cloud exibe Status do cluster: alterações em andamento. Clique em Mostrar detalhes para ver a Condição do status do recurso e as Mensagens de status.
CLI da gcloud
Como opção, liste os pools de nós para saber o nome do pool que você quer excluir:
gcloud container vmware node-pools list \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Execute o comando a seguir para excluir o pool de nós:
gcloud container vmware node-pools delete NODE_POOL_NAME \ --cluster=USER_CLUSTER_NAME \ --project=FLEET_HOST_PROJECT_ID \ --location=LOCATION
Substitua:
NODE_POOL_NAME
: o nome do pool de nós a ser excluídoUSER_CLUSTER_NAME
: o nome do cluster do usuário que contém o pool de nós.LOCATION
: o local do Google Cloud associado ao cluster de usuário.
Solução de problemas
Em geral, o comando
gkectl update cluster
fornece detalhes quando falha. Se o comando for bem-sucedido e você não vir os nós, solucione o problema com o guia Como diagnosticar problemas de cluster.É possível que haja recursos de cluster insuficientes, como a falta de endereços IP disponíveis durante a criação ou atualização do pool de nós. Consulte o tópico Como redimensionar um cluster de usuários para ver detalhes sobre como verificar se os endereços IP estão disponíveis.
Você também pode consultar o guia geral de Solução de problemas.
Não prosseguirá depois de
Creating node MachineDeployment(s) in user cluster…
.Pode levar algum tempo para criar ou atualizar os pools de nós no cluster de usuários. No entanto, se o tempo de espera for extremamente longo e você suspeitar que algo possa ter ocorrido, execute os seguintes comandos:
- Execute
kubectl get nodes
para ver o estado dos nós. - Para qualquer nó que não esteja pronto, execute
kubectl describe node NODE_NAME
para mais detalhes.
- Execute