Como criar e gerenciar pools de nós

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.

A maneira de criar, atualizar e excluir pools de nós depende de o cluster ser gerenciado pela API GKE On-Prem. Um cluster de usuário será gerenciado pela API GKE On-Prem se uma das condições a seguir for verdadeira:

Se a API GKE On-Prem estiver gerenciando um cluster de usuários, será possível usar o console do Google Cloud para gerenciar pools de nós. Se o cluster de usuário não for gerenciado pela API GKE On-Prem, use gkectl na linha de comando da estação de trabalho de administrador para gerenciar pools de nós.

Adicione um pool de nós

Se você criou o cluster no console do Google Cloud, é possível usar o console do Google Cloud para adicionar um pool de nós. Porém, você precisa usar a linha de comando para definir as seguintes configurações do pool de nós:

Antes de adicionar outro pool de nós, verifique se endereços IP suficientes estão disponíveis no cluster.

Console

  1. No console do Google Cloud, acesse a página Clusters do Anthos.

    Acesse a página de clusters do Anthos

  2. Selecione o projeto do Cloud em que o cluster de usuário está.

  3. Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.

  4. Clique em Adicionar pool de nós.

  5. Configure o pool de nós:

    1. Digite o Nome do pool de nós.
    2. Insira o número de vCPUs de cada nó no pool (mínimo de 4 por worker do cluster de usuário)
    3. 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).
    4. No campo Nodes, insira o número de nós no pool (mínimo de três).
    5. Selecione o tipo de imagem do SO: Ubuntu Containerd, Ubuntu ou COS.

    6. Digite Tamanho do disco de inicialização em gibibytes (GiB). O padrão é 40 GiB.

  6. Na seção Metadados do pool de nós (opcional), se quiser adicionar rótulos e taints do Kubernetes, faça o seguinte:

    1. Clique em + Adicionar rótulos do Kubernetes. Insira a Chave e o Valor do rótulo. Repita quantas vezes forem necessárias.
    2. Clique em + Adicionar taint. Insira Key, Value e Effect para o taint. Repita quantas vezes forem necessárias.
  7. Clique em Criar.

  8. 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.

Linha de comando

  1. 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 ou nodePools[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
  2. 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 especificados
  • pool-2: inclui vsphere.datastore e vsphere.tags
  • pool-3: inclui taints e labels
  • pool-4: inclui osImageType e 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

Atualizar um pool de nós

Use a linha de comando para atualizar todos os campos na seção nodePools do arquivo de configuração do cluster de usuário. Atualmente, os únicos campos do pool de nós que podem ser atualizados usando o console do Google Cloud são:

  • Número de réplicas
  • Memória
  • Número de vCPUs

Quando você aumenta o número de réplicas, os clusters do Anthos no VMware adicionam o número necessário de nós ao cluster de usuários 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 se 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, os clusters do Anthos no VMware criam um novo nó e excluem um nó 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:

Console

  1. No console do Google Cloud, acesse a página Clusters do Anthos.

    Acesse a página de clusters do Anthos

  2. Selecione o projeto do Cloud em que o cluster de usuário está.

  3. Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.

  4. Clique na guia Nós.

  5. Clique no nome do pool de nós que você quer modificar.

  6. Clique em Editar ao lado do campo que você quer modificar e clique em Concluído.

  7. Clique em para voltar à página anterior.

  8. 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.

Linha de comando

  1. Modifique os valores dos campos que você quer alterar na seção nodePools do arquivo de configuração do cluster de usuário.

  2. 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

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:

Console

  1. No console do Google Cloud, acesse a página Clusters do Anthos.

    Acesse a página de clusters do Anthos

  2. Selecione o projeto do Cloud em que o cluster de usuário está.

  3. Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.

  4. Clique na guia Nós.

  5. Clique no nome do pool de nós que você quer ver.

Linha de comando

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.

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:

Console

  1. Assegure-se de que não haja cargas de trabalho em execução nos nós afetados.

  2. No console do Google Cloud, acesse a página Clusters do Anthos.

    Acesse a página de clusters do Anthos

  3. Selecione o projeto do Cloud em que o cluster de usuário está.

  4. Na lista de cluster, clique no nome dele e em Ver detalhes no painel Detalhes.

  5. Clique na guia Nós.

  6. Clique no nome do pool de nós que você quer excluir.

  7. Clique em Excluir.

  8. Clique em para voltar à página anterior.

  9. 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.

Linha de comando

  1. Assegure-se de que não haja cargas de trabalho em execução nos nós afetados.

  2. Remova a definição da seção nodePools do arquivo de configuração do cluster de usuário.

  3. 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.

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:

    1. Execute kubectl get nodes para ver o estado dos nós.
    2. Para qualquer nó que não esteja pronto, execute kubectl describe node NODE_NAME para mais detalhes.