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, garantindo que o pool de nós perca temporariamente apenas um nó devido ao upgrade. |
| maxSurge: 5 maxUnavailable: 1 | 2 | Faz upgrade de apenas três nós simultaneamente, garantindo que o pool de nós não tenha mais de um nó a menos devido ao 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 Google Cloud projeto.COMPUTE_ZONE: a zona do Compute Engine para o cluster.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:
- Considere uma estratégia de upgrade que consome menos recursos. Se você estiver usando upgrades azul-verde, considere upgrades súbitos.
- 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.
- Se as duas primeiras etapas não conseguirem desbloquear o upgrade, solicite um aumento de cota ou aumente o tamanho da reserva específica.
- 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 Google Cloud tiver capacidade limitada para um recurso específico que o pool de nós está usando, recomendamos que você use uma reserva para GPUs e TPUs. Para pools de nós que contêm apenas CPUs, recomendamos que você faça upgrade das CPUs usando capacidade fixa.
Essas duas estratégias podem ajudar a garantir que você tenha recursos adequados para realizar um upgrade de versão. Se você não tiver recursos adequados, talvez não seja possível fazer upgrade dos nós até que você possa acessar mais capacidade.
Se você não tiver capacidade extra, não poderá usar upgrades azul-verde.
Ao usar upgrades súbitos em um ambiente com recursos restritos, observe o seguinte:
- Quando você usa nós súbitos para um upgrade, são necessários mais nós, o que pode ser difícil de alcançar em um ambiente com recursos restritos. Para mais
informações sobre essa configuração, consulte
maxSurge: o GKE cria um novo nó súbito antes de remover um nó atual. - Quando você define o campo
maxUnavailablecomo um valor maior que zero e a capacidade não é de uma reserva, em alguns cenários, o GKE libera temporariamente a capacidade do nó ao fazer upgrade dele. Isso significa que, se houver capacidade limitada, você corre o risco de perder a capacidade. Para mais informações, consultemaxUnavailable: o GKE torna um nó atual indisponível para recriá-lo.
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 fixa
Para CPUs, para fazer upgrade em um ambiente com recursos restritos, use capacidade fixa. Para fazer isso, use upgrades súbitos e defina a configuração maxUnavailable como um valor maior que zero. Para mais detalhes, consulte
maxUnavailable: o GKE torna um nó atual indisponível para recriá-lo.
O upgrade usando uma capacidade fixa permite que você faça upgrades quando não for possível conseguir mais capacidade e ajuda a evitar a perda de capacidade atual durante o upgrade.
Upgrade com capacidade limitada com uma reserva
Para GPUs e TPUs, para fazer upgrade em um ambiente com restrição de capacidade, use uma reserva e ajuste 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. Recomendamos essa abordagem para
realizar a manutenção do host para nós que executam cargas de trabalho de treinamento e inferência.
A seguir
- Saiba mais sobre as estratégias de upgrade de nós.
- Saiba mais sobre cota de recursos
- Saiba mais sobre reservas de consumo