Como verificar upgrades e cotas de nós


Visão geral

Todos os nós criados estão sujeitos à cota de recursos do seu projeto. Qualquer pool de nós criado com uma afinidade de reserva específica está sujeito à capacidade da reserva durante toda a vida útil do pool de nós.

Como upgrades súbitos criam VMs extras antes de reduzir e excluir nós antigos, os upgrades poderão falhar se o projeto não tiver cota ou reserva de recursos suficiente ("cota" se refere a ambas neste artigo).

Se a cota disponível for menor que o número de nós especificados em maxSurge, o número de upgrades simultâneos será menor que maxSurge + maxUnavailable. Se não houver cota suficiente disponível para criar um único nó e maxUnavailable estiver definido como "0", ocorrerá uma falha no upgrade.

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

Configurações de upgrade Número de nós extras permitidos pela cota 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.
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 um deles em um upgrade contínuo.

Como verificar a cota

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/[ZONE]/clusters/[CLUSTER_NAME]"

Se o upgrade mais recente falhar devido à cota de recursos insuficiente, 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á:

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."

Como resolver erros de upgrade

Se o upgrade falhar por causa da cota, você terá três opções:

  1. Verifique se há recursos do Compute Engine no seu projeto que estão consumindo a cota e que não são mais necessários. Se você encontrar algum, remova-o e tente fazer o upgrade novamente.
  2. Se a primeira etapa não desbloquear o upgrade, solicite um aumento de cota ou amplie o tamanho da reserva específica.
  3. Se, por algum motivo, não for possível aumentar a cota, defina o valor de maxUnavailable como "1" para desbloquear os upgrades. Essa opção deve ser usada apenas em último caso, já que é recomendado manter maxUnavailable em "0" para minimizar as interrupções causadas pelos upgrades.

A seguir