A partir da versão 1.3 do GKE On-Prem, é possível criar um pool de nós para definir um grupo de nós em todos os clusters do usuário que tenham a mesma configuração. Em seguida, é possível gerenciar esse pool de nós separadamente sem afetar os outros nós em cada cluster. Saiba mais sobre pools de nós.
É possível definir um ou mais pools de nós nos arquivos de configuração dos clusters de usuário. A criação de um pool de nós cria nós adicionais em cada cluster.
O gerenciamento do pool de nós é feito por meio do arquivo de configuração do cluster do usuário, incluindo a criação, a atualização e a exclusão de pools de nós. Depois que os pools de nós forem definidos nos arquivos de configuração, implante essas alterações nos clusters com o comando gkectl update cluster
. As alterações implantadas são realizadas imediatamente em cada cluster de usuário. Por exemplo, se você remover um pool de nós de um cluster, esses nós serão excluídos imediatamente, mesmo que estejam executando uma carga de trabalho.
Exemplo de pool de nós:
nodepools:
- name: pool-1
cpus: 4
memorymb: 8192
replicas: 5
Dica para novas instalações: crie seu primeiro cluster de usuários e defina pools de nós nesse cluster. Em seguida, use o arquivo de configuração desse cluster para criar clusters de usuário adicionais com as mesmas configurações do pool de nós.
Antes de começar
Suporte:
Apenas clusters de usuário versão 1.3.0 ou posterior são compatíveis.
Os pools de nós em clusters de administração não são compatíveis.
Atualmente, o comando
gkectl update cluster
é compatível apenas com o gerenciamento de pool de nós. Todas as outras alterações atuais no arquivo de configuração são ignoradas.Embora seja possível gerenciar nós em um pool de nós em cada cluster de usuário separadamente, nenhum nó de cluster pode ser atualizado separadamente. Todos os nós são atualizados quando você faz o upgrade dos clusters.
Recursos:
É possível implantar apenas alterações no pool de nós
replicas
sem interrupção na carga de trabalho de um nó.Importante: se você implantar qualquer outra alteração na configuração do pool de nós, os nós serão recriados no pool. É preciso garantir que cada pool de nós não esteja executando uma carga de trabalho que não será interrompida.
Quando você implanta as alterações no pool de nós, um nó temporário pode ser criado. É necessário verificar se um endereço IP está disponível para esse nó temporário.
Como criar e atualizar os pools de nós
Você gerencia um pool de nós modificando e implantando o arquivo de configuração do cluster de usuários. É possível criar e implantar um ou mais pools de nós em cada cluster de usuário.
Para criar ou atualizar pools de nós:
Em um editor, abra o arquivo de configuração do cluster de usuários em que você quer criar ou atualizar os pools de nós.
Defina um ou mais pools de nós na seção
nodepools
emusercluster
no arquivo de configuração:Configure os atributos mínimos necessários do pool de nós. Especifique os seguintes atributos para cada pool de nós:
usercluster.nodepools.name
: especifica um nome exclusivo para o pool de nós. A atualização desse atributo recria o nó. Exemplo:name: pool-1
usercluster.nodepools.cpus
: especifique quantas CPUs estão alocadas em cada nó de trabalho do cluster de usuário. A atualização desse atributo recria o nó. Exemplo:cpus: 4
usercluster.nodepools.memorymb
: especifica o volume de memória, em megabytes, alocado para cada nó de trabalho do cluster de usuário. A atualização desse atributo recria o nó. Exemplo:memorymb: 8192
usercluster.nodepools.replicas
: especifica o número total de nós de trabalho que o cluster de usuário usa para executar cargas de trabalho. É possível atualizar esse atributo sem afetar os nós ou executar cargas de trabalho. Exemplo:replicas: 5
Embora alguns dos atributos
nodepools
sejam os mesmos queworkernode
(DHCP | IP estático), a seçãoworkernode
é necessária para todos os clusters de usuários. Não é possível removerworkernode
nem substituí-lo pornodepools
.Exemplo:
nodepools: - name: pool-1 cpus: 4 memorymb: 8192 replicas: 5
Consulte Exemplos para ver um exemplo de configuração com vários pools de nós.
Configure atributos opcionais do pool de nós. É possível adicionar rótulos e taints à configuração do pool de nós para direcionar cargas de trabalho de nós. Também é possível definir qual vSphere Datastore é usado pelo pool de nós.
usercluster.nodepools.labels
: especifica um ou mais pares dekey : value
para identificar exclusivamente seus pools de nós. Okey
e ovalue
precisam ter até 63 caracteres cada e começar com uma letra ou um número. Podem conter letras, números, hífens, pontos e sublinhados.Para informações detalhadas de configuração, consulte rótulos (em inglês).
Importante: não é possível especificar as seguintes chaves para um rótulo porque elas estão reservadas para uso pelo GKE On-Prem:
kubernetes.io
,k8s.io
egoogleapis.com
.Exemplo:
labels: key1: value1 key2: value2
usercluster.nodepools.taints
: especifica umkey
,value
eeffect
para definirtaints
para os pools de nós. Essastaints
correspondem aotolerations
configurado para os pods.O
key
é obrigatório e ovalue
é opcional. Ambos precisam ter até 253 caracteres e começar com uma letra ou um número. Podem conter letras, números, hífens, pontos e sublinhados. Opcionalmente, é possível prefixar umkey
com um subdomínio DNS seguido por uma/
. Por exemplo,example.com/my-app
.Os valores
effect
válidos são:NoSchedule
,PreferNoSchedule
, ouNoExecute
.Para ver informações detalhadas de configuração, consulte taints (em inglês).
Exemplo:
taints: - key: key1 value: value1 effect: NoSchedule
usercluster.nodepools.vsphere.datastore
: especifique o vSphere Datastore a ser usado com o pool de nós. Isso substitui o vSphere Datastore padrão do cluster de usuário.Exemplo:
vsphere: datastore: datastore_name
Consulte Exemplos para ver um exemplo de configuração com vários pools de nós.
Use o comando
gkectl update cluster
para implantar as alterações no cluster de usuários.Observação: o
gkectl update cluster
aceita apenas o gerenciamento de pool de nós. Somente as alterações na seçãonodepools
são implantadas. Todas as outras alterações no arquivo de configuração são ignoradas.gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
em que:- [ADMIN_CLUSTER_KUBECONFIG]: especifica o
arquivo
kubeconfig
do cluster de administrador. - config.yaml: especifica o
configuration file
editado do cluster de usuários. Talvez você tenha escolhido um nome diferente para este arquivo. --dry-run
: sinalização opcional. Adicione esta sinalização para visualizar somente a alteração. Nenhuma alteração é implantada no cluster de usuários.--yes
: sinalização opcional. Adicione essa sinalização para executar o comando silenciosamente. O prompt que verifica se você quer continuar está desativado.
Se você tiver cancelado o comando antecipadamente, poderá executar o mesmo comando novamente para concluir a operação e implantar as alterações no cluster do usuário.
Se você precisar reverter as alterações, será necessário revertê-las no arquivo de configuração e reimplantá-las no cluster de usuários.
- [ADMIN_CLUSTER_KUBECONFIG]: especifica o
arquivo
Verifique se as alterações foram bem-sucedidas inspecionando todos os nós. Execute o seguinte comando para listar todos os nós no cluster de usuários:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
[USER_CLUSTER_KUBECONFIG] é o arquivo
kubeconfig
do cluster de usuário.
Como excluir os pools de nós
Para remover pools de nós de um cluster de usuário:
Remova todas as configurações de
nodepools
do arquivo de configuração do cluster de usuário. Se houver vários pools de nós, remova todas as configurações.Verifique se há cargas de trabalho em execução. Todos os nós afetados serão excluídos.
Implante as alterações executando o comando
gkectl update cluster
:gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config config.yaml --dry-run --yes
em que:- [ADMIN_CLUSTER_KUBECONFIG]: especifica o
arquivo
kubeconfig
do cluster de administrador. - config.yaml: especifica o
configuration file
editado do cluster de usuários. Talvez você tenha escolhido um nome diferente para este arquivo. --dry-run
: sinalização opcional. Adicione esta sinalização para visualizar somente a alteração. Nenhuma alteração é implantada no cluster de usuários.--yes
: sinalização opcional. Adicione essa sinalização para executar o comando silenciosamente. O prompt que verifica se você quer continuar está desativado.
- [ADMIN_CLUSTER_KUBECONFIG]: especifica o
arquivo
Verifique se as alterações foram bem-sucedidas inspecionando todos os nós. Execute o seguinte comando para listar todos os nós no cluster de usuários:
kubectl --kubeconfig [USER_CLUSTER_KUBECONFIG] get nodes -o wide
[USER_CLUSTER_KUBECONFIG] é o arquivo
kubeconfig
do cluster de usuário.
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
: inclui o vSphere Datastorepool-3
: inclui taints e rótulospool-4
: inclui todos os atributos
...
usercluster:
...
workernode:
cpus: 4
memorymb: 8192
replicas: 3
# (Optional) Node pools with customizable labels, taints, etc.
nodepools:
- name: pool-1
cpus: 4
memorymb: 8192
replicas: 5
- name: pool-2
cpus: 8
memorymb: 16384
replicas: 3
vsphere:
datastore: my_datastore
- name: pool-3
cpus: 4
memorymb: 8192
replicas: 5
taints:
- key: "example-key"
effect: NoSchedule
labels:
environment: production
app: nginx
- name: pool-4
cpus: 8
memorymb: 16384
replicas: 3
taints:
- key: "my_key"
value: my_value1
effect: NoExecute
labels:
environment: test
vsphere:
datastore: my_datastore
...
Veja um exemplo completo do arquivo de configuração do cluster de usuários.
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