Esta página explica como garantir que pode usar estratégias de atualização de nós para fazer alterações aos nós do cluster. Recomendamos que verifique se o seu projeto tem recursos suficientes para atualizar os conjuntos de nós padrão do Google Kubernetes Engine (GKE) consoante a estratégia que escolher.
Recursos necessários para atualizações de nós
As atualizações de nós podem exigir que o GKE crie temporariamente nós adicionais, consoante a estratégia e a configuração de nós que escolheu. Por este motivo, o GKE pode exigir recursos adicionais para uma atualização do conjunto de nós.
Todos os nós que o GKE cria, incluindo os nós usados para atualizações, estão sujeitos à quota de recursos do seu projeto, à disponibilidade de recursos e à capacidade de reserva para conjuntos de nós com afinidade de reserva específica.
Recomendamos vivamente que verifique se tem recursos adequados se tiver requisitos especiais de tipo de máquina e restrições de capacidade. Pode ter de configurar uma estratégia que exija menos recursos para garantir que pode atualizar os nós ou tomar outras medidas, como criar uma reserva. Para saber mais, consulte o artigo Atualize num ambiente com restrições de recursos.
Recursos necessários para diferentes estratégias de atualização
As secções seguintes descrevem os recursos adicionais necessários para usar as estratégias de atualização disponíveis. Se estiver a ter problemas de atualização, verifique as operações de atualização e siga as instruções para resolver erros de atualização.
Recursos para atualizações de aumentos
As atualizações de picos são a estratégia de atualização de nós predefinida. Uma vez que as atualizações
rápidas
criam VMs adicionais (se maxSurge
estiver definido para mais de zero) antes de esgotar e
eliminar os nós antigos, as atualizações podem falhar se o seu projeto não tiver recursos
suficientes.
Se os recursos disponíveis forem inferiores ao número de nós especificados em
maxSurge
, o número de atualizações paralelas é inferior a maxSurge
mais
maxUnavailable
. Se não tiver capacidade adicional, veja como atualizar num ambiente com restrições de recursos.
A tabela seguinte descreve exemplos para demonstrar diferentes comportamentos de atualização:
Definições de atualização | Número de nós adicionais permitidos pelos recursos disponíveis | Resultado |
---|---|---|
maxSurge: 5 maxUnavailable: 0 | 5 | Atualiza 5 nós em paralelo. |
maxSurge: 5 maxUnavailable: 0 | 2 | Atualiza apenas 2 nós em paralelo. |
maxSurge: 5 maxUnavailable: 0 | 0 | A atualização falha, uma vez que não é possível apresentar nós adicionais e o reinício dos existentes é proibido pelas definições de atualização. O GKE continua a tentar a atualização automática até que a operação seja bem-sucedida. |
maxSurge: 5 maxUnavailable: 1 | 5 | Atualiza 6 nós em paralelo, ao mesmo tempo que garante que o node pool perde temporariamente apenas um nó devido à atualização. |
maxSurge: 5 maxUnavailable: 1 | 2 | Atualiza apenas 3 nós em paralelo, ao mesmo tempo que garante que o node pool não tem menos de um nó devido à atualização. |
maxSurge: 5 maxUnavailable: 1 | 0 | Atualiza apenas 1 nó de cada vez, recriando cada nó com um método de atualização contínua. |
Recursos para atualizações azul-verde
Atualizações azul-verde duplicam temporariamente o número de nós num conjunto de nós, o que significa que o seu conjunto de nós precisa temporariamente do dobro dos recursos. Se não tiver recursos suficientes disponíveis e tiver configurado o seu conjunto de nós para usar esta estratégia, configure as atualizações rápidas em alternativa se precisar de desbloquear as atualizações. Quando configurar esta estratégia, certifique-se de que configura parâmetros de atualização por picos que funcionem com os recursos disponíveis para os nós do conjunto de nós. Para saber mais, consulte a secção anterior, Recursos para atualizações de picos.
Verifique as operações de atualização quanto a falhas relacionadas com recursos
Pode encontrar mais informações sobre as operações de atualização, bem como informações sobre se e por que motivo falharam atualizações, verificando os objetos de operação de atualização. Para apresentar uma lista dos objetos da operação de atualização, 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 o seguinte:
PROJECT_ID
: o ID do seu projeto Google Cloud .COMPUTE_ZONE
: a zona do Compute Engine para o seu cluster.CLUSTER_NAME
: o nome do cluster.
Se a atualização mais recente falhou devido a uma quota de recursos insuficiente, o resultado é semelhante ao seguinte:
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 devido a uma reserva insuficiente, o resultado é semelhante ao seguinte:
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 a capacidade insuficiente, são apresentadas mensagens de erro de disponibilidade de recursos.
Resolução de erros de atualização
Se a atualização falhou devido a recursos insuficientes, experimente estes passos:
- Considere uma estratégia de atualização menos exigente em termos de recursos. Se estiver a usar atualizações azul-verde, pondere usar atualizações de picos.
- Verifique se existem recursos do Compute Engine no seu projeto que estão a consumir recursos e já não são necessários. Se encontrar alguma, remova-a e tente novamente a atualização.
- Se os dois primeiros passos não conseguirem desbloquear a atualização, peça um aumento da quota ou aumente o tamanho da reserva específica.
- Se estiver a operar num ambiente com restrições de recursos, por exemplo, com requisitos especiais de tipo de máquina e restrições de capacidade, consulte a secção seguinte para ver os passos para desbloquear as atualizações.
Atualize num ambiente com restrições de recursos
Se o Google Cloud tiver capacidade limitada para um recurso específico (por exemplo, GPUs ou TPUs) que o seu conjunto de nós está a usar, recomendamos que use uma reserva para garantir que tem recursos adequados. Se não tiver recursos adequados, pode não conseguir atualizar os seus nós até poder aceder a mais capacidade, se não tiver uma reserva para a sua capacidade existente.
Se não conseguir capacidade adicional, não pode usar atualizações azul-verde. Para atualizações de picos,
maxSurge
são necessários nós adicionais. Com,
maxUnavailable
>,
se a capacidade não for de uma reserva, o GKE liberta temporariamente a capacidade do nó quando o atualiza, o que significa que, se houver capacidade limitada, corre o risco de a perder.
Use as seguintes orientações, consoante tenha ou não uma reserva para o seu conjunto de nós que precise de ser atualizado.
Atualize com capacidade limitada sem reserva
Se não tiver uma reserva para os nós do seu conjunto de nós, recomendamos que
crie uma reserva. No entanto, se não puder, recomendamos que use atualizações de picos com a configuração
predefinida
de maxSurge=1;maxUnavailable=0
. Com esta configuração, não corre o risco de perder a capacidade existente. No entanto, as atualizações de picos só criam um nó de pico se a capacidade estiver disponível. Assim, se não estiver disponível capacidade, as atualizações podem demorar mais tempo e o seu conjunto de nós pode permanecer num estado parcialmente atualizado até que seja garantida capacidade para atualizar cada nó.
Recomendamos que crie uma reserva ou aumente o tamanho de uma reserva existente.
Atualize com capacidade limitada através de uma reserva
Se tiver uma reserva para os nós do conjunto de nós, pode atualizar os conjuntos de nós num ambiente com restrições de capacidade, ajustando as definições de atualização por picos para velocidade e fiabilidade.
Se tiver capacidade adicional na reserva, pode usar maxSurge
para criar nós de pico. Defina maxSurge
consoante o número de nós que quer interromper de uma só vez e a capacidade adicional que tem. Por exemplo, defina
maxSurge=1;maxUnavailable=0
se quiser interromper apenas um nó de cada vez ou
se só tiver capacidade para criar um nó adicional.
Se não tiver capacidade adicional, pode usar o maxUnavailable
com uma configuração como maxSurge=0;maxUnavailable=1
, uma vez que a capacidade está reservada. Esta configuração interrompe um nó de cada vez, recriando o nó para o atualizar.
O que se segue?
- Saiba mais sobre as estratégias de atualização de nós
- Saiba mais acerca da quota de recursos
- Saiba mais sobre como usar as reservas