Nesta página, você aprende a redimensionar um cluster de usuário do GKE On-Prem. Redimensionar um cluster de usuário significa adicionar ou remover nós desse cluster. A remoção de nós de um cluster precisa liberar os endereços IP do cluster, disponibilizando-os para uso por outros nós. A adição de nós exige que os endereços IP estejam disponíveis para esses nós.
Para redimensionar um cluster de usuário, altere os campos replicas
da configuração
MachineDeployment do cluster. É possível corrigir a configuração da
linha de comando usando kubectl patch
.
Para informações sobre limites máximos e mínimos para clusters de usuários, consulte Cotas e limites.
Verificar se há endereços IP suficientes disponíveis
Se você estiver adicionando mais nós a um cluster, certifique-se de que ele tenha endereços IP suficientes. Para verificar se você tem endereços IP suficientes, isso dependerá se o cluster usa um servidor DHCP ou IPs estáticos.
DHCP
Se o cluster usar o DHCP, verifique se o servidor DHCP na rede em que os nós são criados tenham endereços IP suficientes. Haverá mais endereços IP do que há nós em execução no cluster de usuário.
IPs estáticos
Se o cluster usar IPs estáticos, verifique se você alocou endereços IP suficientes no cluster:
kubectl get cluster --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] \ -n [USER_CLUSTER_NAME] [USER_CLUSTER_NAME] -o yaml
em que:
- [ADMIN_CLUSTER_KUBECONFIG] informa ao kubectl para usar o kubeconfig do cluster de administrador, que é usado para visualizar e/ou alterar as configurações do cluster de usuário.
-n [USER_CLUSTER_NAME]
informa ao kubectl para procurar um namespace com o mesmo nome do cluster de usuário.[USER_CLUSTER_NAME] -o yaml
informa ao kubectl em qual cluster de usuário você está executando o comando.-o yaml
exibe a configuração do cluster de usuário.
Na saída do comando, procure o campo reservedAddresses
. É preciso
haver mais endereços IP no campo do que nós em execução no cluster
de usuário.
Se você precisar adicionar mais endereços ao campo reservedAddresses
, siga
estas etapas:
Abra o recurso de cluster do cluster de usuário para edição:
kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] edit cluster [USER_CLUSTER_NAME] \ -n [USER_CLUSTER_NAME]
A configuração do cluster é aberta no editor padrão do shell.
Adicione quantos blocos de IP estáticos forem necessários. Um bloco de IP é composto pelos campos
gateway
,hostname
,ip
enetmask
.
Abaixo está um campo reservedAddresses
de exemplo com os quatro blocos de IP estáticos
destacados:
... networkSpec: dns: - 172.x.x.x ntp: 129.x.x.x reservedAddresses: - gateway: 100.x.x.x hostname: host-1 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-2 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-3 ip: 100.x.x.x netmask: x - gateway: 100.x.x.x hostname: host-4 ip: 100.x.x.x netmask: x ...
Antes de começar
Exporte uma variável de ambiente KUBECONFIG
que aponte para o kubeconfig do
cluster de usuário que você quer redimensionar:
export KUBECONFIG=[USER_CLUSTER_KUBECONFIG]
Como redimensionar um cluster de usuário
Para redimensionar um cluster, edite o recurso MachineDeployment do cluster de usuário. Para encontrar o nome do recurso MachineDeployment do cluster de usuários, execute o seguinte comando:
kubectl get machinedeployments
O MachineDeployment do cluster de usuário inclui o nome do cluster.
Para redimensionar o cluster de usuário, você precisa corrigir a configuração do MachineDeployment
do cluster. É possível alterar o valor do campo replicas
da configuração,
que indica quantos nós o cluster precisa executar:
kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p "{\"spec\": {\"replicas\": [INT] }}" --type=merge
em que [INT] é o número de nós que você quer que o cluster de usuário execute.
Verificar o redimensionamento
Para verificar se o redimensionamento foi realizado com êxito, execute:
kubectl get nodes kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME] | grep Replicas
O número de nós que você escolheu precisa ser refletido na saída desses comandos.
Solução de problemas
Para mais informações, consulte Solução de problemas.
Falha no redimensionamento de um cluster de usuário
- Sintomas
Falha na operação de redimensionamento em um cluster de usuário.
- Causas possíveis
Vários fatores podem causar falhas nas operações de redimensionamento.
- Resolução
Se um redimensionamento falhar, siga estas etapas:
Verifique o status de MachineDeployment do cluster para ver se há eventos ou mensagens de erro:
kubectl describe machinedeployments [MACHINE_DEPLOYMENT_NAME]
Verifique se há erros nas máquinas recém-criadas:
kubectl describe machine [MACHINE_NAME]
Erro: "nenhum endereço pode ser alocado"
- Sintomas
Depois de redimensionar um cluster de usuário,
kubectl describe machine [MACHINE_NAME]
exibe o seguinte erro:Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning Failed 9s (x13 over 56s) machineipam-controller ipam: no addresses can be allocated
- Causas possíveis
Não há endereços IP suficientes disponíveis para o cluster de usuário.
- Resolução
Aloque mais endereços IP para o cluster. Em seguida, exclua a máquina afetada:
kubectl delete machine [MACHINE_NAME]
Se o cluster estiver configurado corretamente, uma máquina de substituição será criada com um endereço IP.
Número suficiente de endereços IP alocados, mas a máquina não é registrada no cluster
- Sintomas
A rede tem endereços suficientes alocados, mas ainda assim a máquina não é registrada no cluster de usuário.
- Causas possíveis
Pode haver um conflito de IP. O IP pode ser usado por outra máquina ou pelo balanceador de carga.
- Resolução
Verifique se o endereço IP da máquina afetada não foi usado. Se houver um conflito, você precisará resolvê-lo no seu ambiente.
Novos nós criados, mas não íntegros
- Sintomas
Novos nós não se registram no plano de controle do cluster de usuário ao usar o modo de balanceamento de carga manual.
- Causas possíveis
A validação da entrada no nó pode estar ativada para bloquear o processo de inicialização dos nós.
- Resolução
Para desativar a validação, execute:
kubectl patch machinedeployment [MACHINE_DEPLOYMENT_NAME] -p '{"spec":{"template":{"spec":{"providerSpec":{"value":{"machineVariables":{"net_validation_ports": null}}}}}}}' --type=merge
Como diagnosticar problemas de cluster usando gkectl
Use os comandos gkectl diagnose
para identificar problemas de cluster
e compartilhar informações do cluster com o Google. Consulte
Como diagnosticar problemas de cluster.
Comportamento de geração de registros padrão
Para gkectl
e gkeadm
, basta usar as configurações de
geração de registros padrão:
-
Por padrão, as entradas de registro são salvas da seguinte maneira:
-
Para
gkectl
, o arquivo de registros padrão é/home/ubuntu/.config/gke-on-prem/logs/gkectl-$(date).log
e está vinculado ao arquivologs/gkectl-$(date).log
no diretório local em que você executagkectl
. -
Para
gkeadm
, o arquivo de registros padrão élogs/gkeadm-$(date).log
no diretório local em que você executagkeadm
.
-
Para
- Todas as entradas de registro são salvas no arquivo de registros, mesmo que não sejam
impressas no terminal (quando
--alsologtostderr
éfalse
). - O nível de detalhamento
-v5
(padrão) abrange todas as entradas de registro exigidas pela equipe de suporte. - O arquivo de registros também contém o comando executado e a mensagem de erro.
Recomendamos que você envie o arquivo de registros para a equipe de suporte quando precisar de ajuda.
Como especificar um local não padrão para o arquivo de registros
Se quiser especificar um local não padrão para o arquivo de registros gkectl
, use
a sinalização --log_file
. O arquivo de registro que você especificar não
será vinculado ao diretório local.
Se quiser especificar um local não padrão para o arquivo de registros gkeadm
, use
a sinalização --log_file
.
Como localizar registros da API Cluster no cluster de administrador
Se uma VM não for iniciada após o início do plano de controle do administrador, tente depurar isso inspecionando os registros dos controladores da API Cluster no cluster de administrador:
Encontre o nome do pod de controladores da API Cluster no namespace
kube-system
, em que [ADMIN_CLUSTER_KUBECONFIG] é o caminho para o arquivo kubeconfig do cluster de administrador:kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system get pods | grep clusterapi-controllers
Abra os registros do pod, em que [POD_NAME] é o nome do pod. Opcionalmente, use
grep
ou uma ferramenta semelhante para pesquisar erros:kubectl --kubeconfig [ADMIN_CLUSTER_KUBECONFIG] -n kube-system logs [POD_NAME] vsphere-controller-manager