A partir da versão 1.3 do GKE On-Prem, é possível criar um grupo de nós no cluster de usuário. Todos eles têm a mesma configuração definida no pool de nós no arquivo de configuração desse cluster. Assim, é possível gerenciar esse pool de nós separadamente sem afetar qualquer outro nó no cluster. Saiba mais sobre pools de nós.
Um ou mais pools de nós podem ser definidos no arquivo de configuração de qualquer
cluster de usuário. A criação de um pool de nós cria nós no cluster de usuário.
O gerenciamento do pool de nós, incluindo a criação, atualização e
exclusão de pools de nós em um cluster de usuário, é feito com a modificação da seção nodePools
do arquivo de configuração e da implantação dessas alterações no cluster
atual com o comando gkectl update cluster
. A exclusão de pools de nós
causará a remoção imediata dos nós relacionados, independentemente de algum
deles estar 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.Os nós em um pool podem ser gerenciados separadamente de outros nós, mas não é possível fazer upgrade dos nós de qualquer cluster. 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. Verifique se esse pool de nós não está executando uma carga de trabalho que não pode ser interrompida.
Quando você implanta as alterações no pool de nós, os nós indesejados são excluídos depois que os pretendidos são criados ou atualizados. Uma imposição dessa política é que, mesmo que o número total de nós permaneça o mesmo antes e depois de uma atualização, mais recursos (por exemplo, endereços IP) poderão ser necessários durante a atualização. Verifique se os endereços IP suficientes estão disponíveis para o pico de uso.
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 um 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 do arquivo de configuração do cluster do usuário:
Configure os atributos mínimos necessários do pool de nós. Especifique os seguintes atributos para cada pool de nós:
nodePools.name
: especifica um nome exclusivo para o pool de nós. A atualização desse atributo recria o nó. Exemplo:- name: pool-1
nodePools.cpus
: especifica quantas CPUs são alocadas para cada nó de trabalho no pool. A atualização desse atributo recria o nó. Exemplo:cpus: 4
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
nodePools.replicas
: especifica o número total de nós de trabalho no pool. O cluster do usuário usa nós em todos os pools para executar cargas de trabalho. É possível atualizar esse atributo sem afetar os nós ou executar cargas de trabalho. Exemplo:replicas: 5
Mesmo que alguns dos atributos
nodePools
sejam os mesmos que osworkernode
(DHCP | IP estático ) no arquivo de configuração antigo, a seçãoworkernode
ainda é necessária nos arquivos de configuração antigos de cada cluster de usuário. Não é possível remover a seçãoworkernode
nem substituí-la pornodepools
. No novo arquivo de configuração do cluster de usuário, não há mais nenhuma seçãoworkernode
. Defina pelo menos um pool de nós para um cluster de usuário e garanta que haja nós sem taint suficientes para substituir o poolworkernode
padrão em arquivos de configuração antigos.Exemplo:
nodePools: - name: pool-1 cpus: 4 memoryMB: 8192 replicas: 5
Consulte Exemplos para ver um arquivo de configuração do cluster de usuário 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.
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
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
nodePools.vsphere.datastore
: especifica o armazenamento de dados do vSphere em que cada nó do pool será criado. 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 [USER_CLUSTER_CONFIG_FILE] --dry-run --yes
em que:- [ADMIN_CLUSTER_KUBECONFIG]: especifica o arquivo
kubeconfig
do cluster de administrador. - [USER_CLUSTER_CONFIG_FILE]: especifica o arquivo
configuration
do cluster de usuário; --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 um 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.
Implante as alterações executando o comando
gkectl update cluster
:gkectl update cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] --config [USER_CLUSTER_CONFIG_FILE] --dry-run --yes
em que:- [ADMIN_CLUSTER_KUBECONFIG]: especifica o arquivo
kubeconfig
do cluster de administrador. - [USER_CLUSTER_CONFIG_FILE]: especifica o arquivo
configuration
do cluster de usuário; --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
apiVersion: v1
kind: UserCluster
...
# (Required) List of node pools. The total un-tainted replicas across all node pools
# must be greater than or equal to 3
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
...
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