Garantir recursos para upgrades de nós


Nesta página, explicamos como garantir o uso de estratégias de upgrade de nós para fazer alterações nos nós do cluster. Recomendamos verificar se o projeto tem recursos suficientes para atualizar os pools de nós padrão do Google Kubernetes Engine (GKE), dependendo da estratégia escolhida.

Recursos necessários para upgrades de nós

Os upgrades de nós podem exigir que o GKE crie temporariamente mais nós, dependendo da estratégia e da configuração escolhidas. Por isso, o GKE pode exigir mais recursos para fazer upgrade de um pool de nós.

Todos os nós criados pelo GKE, incluindo aqueles usados para upgrades, estão sujeitos à cota de recursos do projeto, à disponibilidade de recursos e à capacidade de reserva, para pools de nós com afinidade de reserva específica.

Recomendamos que você verifique se tem os recursos adequados se tiver requisitos especiais de tipo de máquina e restrições de capacidade. Talvez seja necessário configurar uma estratégia que exija menos recursos para garantir o upgrade dos nós ou realizar outra ação, como criar uma reserva. Para saber mais, consulte Fazer upgrade em um ambiente restrito de recursos.

Recursos necessários para diferentes estratégias de upgrade

As seções a seguir descrevem os recursos extras necessários para usar as estratégias de upgrade disponíveis. Se você tiver problemas de upgrade, verifique as operações de upgrade e siga as instruções para resolver erros de upgrade.

Recursos para upgrades súbitos

Os upgrades súbitos são a estratégia padrão de upgrade de nós. À medida que upgrades súbitos criam VMs extras (se maxSurge estiver definido como mais que zero) antes de drenar e excluir nós antigos, os upgrades poderão falhar se o projeto não tem recursos suficientes.

Se os recursos disponíveis forem menores que o número de nós especificados em maxSurge, o número de upgrades paralelos será menor que maxSurge mais maxUnavailable. Se você não tiver capacidade extra, veja como fazer upgrade em um ambiente com recursos limitados.

Veja na tabela a seguir exemplos que demonstram diferentes comportamentos de upgrade:

Configurações de upgrade Número de nós extras permitidos pelos recursos disponíveis Resultado
maxSurge: 5 maxUnavailable: 0 5 Faz upgrade de cinco nós simultaneamente.
maxSurge: 5 maxUnavailable: 0 2 Faz upgrade de apenas dois nós simultaneamente.
maxSurge: 5 maxUnavailable: 0 0 Houve falha no upgrade, já que não é possível criar nós extras e é proibido reiniciar os existentes pelas configurações de upgrade. O GKE continua tentando fazer upgrade automaticamente até que a operação seja bem-sucedida.
maxSurge: 5 maxUnavailable: 1 5 Faz upgrade de seis nós simultaneamente e garante a perda temporária de apenas um nó do pool devido ao upgrade.
maxSurge: 5 maxUnavailable: 1 2 Faz upgrade de apenas três nós simultaneamente e garante que o pool tenha no máximo um nó a menos por conta do upgrade.
maxSurge: 5 maxUnavailable: 1 0 Faz upgrade de apenas um nó por vez, recriando cada nó com um método de upgrade contínuo.

Recursos para upgrades azul-verde

Os upgrades azul-verde duplicam temporariamente o número de nós em um pool de nós, o que significa que seu pool de nós precisa temporariamente do dobro de recursos. Se você não tiver recursos suficientes disponíveis e tiver configurado o pool de nós para usar essa estratégia, configure upgrades súbitos se precisar desbloquear upgrades. Ao configurar essa estratégia, configure parâmetros de upgrade súbito que funcionem com os recursos disponíveis para os nós do pool de nós. Para saber mais, consulte a seção anterior, Recursos para upgrades de sobretensão.

Verificar as operações de upgrade em busca de falhas relacionadas a recursos

Para saber mais sobre suas operações de upgrade, além de encontrar mais informações sobre a possibilidade e o motivo das falhas de upgrade, verifique os objetos de operação de upgrade. Para listar esses objetos, execute o seguinte comando:

gcloud container operations list \
    --filter="STATUS=DONE AND TYPE=UPGRADE_NODES AND targetLink:https://container.googleapis.com/v1/projects/PROJECT_ID/zones/COMPUTE_ZONE/clusters/CLUSTER_NAME"

Substitua:

  • PROJECT_ID: o ID do seu projeto do Google Cloud.
  • COMPUTE_ZONE: a zona do Compute Engine para o cluster novo;
  • CLUSTER_NAME: o nome do cluster.

Se o upgrade mais recente falhar devido à cota insuficiente de recursos, a saída será semelhante a esta:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Insufficient quota to satisfy the request: waiting on IG: instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt errors: [QUOTA_EXCEEDED] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Quota 'IN_USE_ADDRESSES' exceeded.  Limit: 50.0 in region us-central1.\
...

Se o motivo for por reservas insuficientes, a saída será semelhante a esta:

gcloud container operations describe operation-1234567891234-1abc2d3e
detail: "Reservation does not have enough resources for the request: waiting on IG:\
  \ instance https://www.googleapis.com/compute/v1/projects/my-project-123/zones/us-central1-a/instances/gke-my-cluster-default-pool-123ab45c-de67\
  \ is still CREATING. Last attempt error: [CONDITION_NOT_MET] Instance 'gke-my-cluster-default-pool-123ab45c-de67'\
  \ creation failed: Specified reservation 'foo' does not have available resources\
  \ for the request."

Se o motivo for devido à capacidade insuficiente, você verá mensagens de erro de disponibilidade de recursos.

Como resolver erros de upgrade

Se o upgrade falhar devido à falta de recursos, tente estas etapas:

  1. Considere uma estratégia de upgrade que consome menos recursos. Se você estiver usando upgrades azul-verde, considere upgrades súbitos.
  2. Verifique se há recursos do Compute Engine no seu projeto que estão consumindo recursos e que não são mais necessários. Se você encontrar algum, remova-o e tente fazer o upgrade novamente.
  3. Se as duas primeiras etapas não conseguirem desbloquear o upgrade, solicite um aumento de cota ou aumente o tamanho da reserva específica.
  4. Se você estiver operando em um ambiente com recursos restritos, por exemplo, requisitos especiais de tipo de máquina e restrições de capacidade, consulte a próxima seção para saber como desbloquear upgrades.

Fazer upgrade em um ambiente com recursos restritos

Se o Google Cloud tiver capacidade limitada para um recurso específico (por exemplo, GPUs ou TPUs) que seu pool de nós estiver usando, recomendamos que você use uma reserva para garantir que você tenha recursos adequados. Se você não tiver recursos adequados, talvez não consiga fazer upgrade dos nós até acessar mais capacidade, caso não tenha uma reserva para a capacidade atual.

Se você não conseguir nenhuma capacidade adicional, não poderá usar upgrades azul-verde. Para upgrades súbitos, maxSurge requer nós extras. Com maxUnavailable, se a capacidade não for de uma reserva, o GKE liberará temporariamente a capacidade do nó ao fazer upgrade dele. Isso significa que, se houver capacidade limitada, você corre o risco de perdê-la.

Use as orientações a seguir, dependendo se você tem uma reserva para o pool de nós que precisa ser atualizada.

Upgrade com capacidade limitada sem reserva

Se você não tiver uma reserva para os nós do pool de nós, recomendamos criar uma reserva. No entanto, se não for possível, recomendamos usar upgrades súbitos com a configuração padrão de maxSurge=1;maxUnavailable=0. Com essa configuração, você não corre o risco de perder a capacidade atual. No entanto, os upgrades súbitos só criam um nó de sobretensão se a capacidade estiver disponível. Portanto, se nenhuma capacidade estiver disponível, os upgrades poderão levar mais tempo e o pool de nós poderá permanecer em um estado parcialmente atualizado até que a capacidade seja garantida para atualizar cada nó.

Recomendamos que você crie uma reserva ou aumente o tamanho de uma atual.

Fazer upgrade com capacidade limitada com uma reserva

Se você tiver uma reserva para os nós do pool de nós, poderá fazer o upgrade dos pools de nós em um ambiente com capacidade limitada, ajustando as configurações de upgrade súbito para velocidade e confiabilidade.

Se você tiver capacidade extra na reserva, poderá usar maxSurge para criar nós súbitos. Defina maxSurge dependendo de quantos nós você quer interromper por vez e da capacidade extra que você tem. Por exemplo, defina maxSurge=1;maxUnavailable=0 se você quiser interromper apenas um nó por vez ou se só tiver capacidade para criar um nó extra.

Se você não tiver capacidade extra, use maxUnavailable com uma configuração como maxSurge=0;maxUnavailable=1, já que a capacidade está reservada. Essa configuração interrompe um nó por vez, recriando o nó para atualizá-lo.

A seguir