Em um cluster de usuário, é possível criar um grupo de nós com a mesma
configuração preenchendo a seção
nodePools
do
arquivo de configuração do cluster.
Em seguida, é possível gerenciar o pool de nós sem afetar os outros nós no
cluster.
Saiba mais sobre pools de nós.
Também é possível atualizar um pool de nós para ter um osImageType
diferente.
Antes de começar
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.
É possível atualizar o campo replicas
de uma seção nodePool
sem
interromper as cargas de trabalho. Entretanto, se você atualizar qualquer outro campo, os nós no
pool serão excluídos e recriados.
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)
Ao atualizar uma seção nodePool
, os clusters do Anthos no VMware criam um novo nó
e, em seguida, excluem um nó antigo. Eles repetem esse processo até que todos os nós antigos
sejam substituídos por novos nós. Isso significa que o cluster precisa ter um
endereço IP extra disponível para uso 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 1 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. Para mais informações, consulte Verificar se endereços IP suficientes estão disponíveis.
Como preencher a seção nodePools
do arquivo de configuração do cluster
No
arquivo de configuração do cluster de usuário,
preencha a
seção
nodePools
.
Para cada pool de nós, é preciso especificar os seguintes campos:
nodePools.[i].name
nodePools[i].cpus
nodePools.[i].memoryMB
nodePools.[i].replicas
Os seguintes campos são opcionais:
nodePools[i].labels
nodePools[i].taints
nodePools[i].bootDiskSizeGB
nodePools[i].osImageType
nodePools[i].vsphere.datastore
nodePools[i].vsphere.tags
Como criar pools de nós em um novo cluster
No arquivo de configuração do cluster de usuário, preencha a seção nodePools
e
crie o cluster:
gkectl create cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Substitua:
ADMIN_CLUSTER_KUBECONFIG: o arquivo kubeconfig do cluster do administrador
USER_CLUSTER_CONFIG: o arquivo de configuração do cluster de usuário
Como atualizar os pools de nós em um cluster existente
No arquivo de configuração do cluster de usuário, edite a seção nodePools
e
atualize o cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Como 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:
kubectl --kubeconfig USER_CLUSTER_KUBECONFIG get nodes --output wide
Se você precisar reverter as alterações, edite o arquivo de configuração do cluster e
execute gkectl update cluster
.
Exclusão do pool de nós
Para excluir um pool de nós de um cluster de usuário:
Remova a definição da seção
nodePools
do arquivo de configuração do cluster de usuário.Assegure-se de que não haja cargas de trabalho em execução nos nós afetados.
Atualize o cluster:
gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG
Exemplos
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
Atualizar o osImageType
usado por um pool de nós
É possível atualizar um pool de nós para usar outro osImageType
. 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
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