Atualize um node pool

Este tópico explica como pode atualizar os seus node pools. Pode atualizar os seus pools de nós pelos seguintes motivos:

  • Para atualizar a versão do node pool
  • Para alterar o número de nós no conjunto de nós
  • Para alterar as anotações do conjunto de nós (só podem ser atualizadas através da API)

Também pode alterar parâmetros adicionais nos seus conjuntos de nós que não estão indicados acima. Para ver uma lista completa dos parâmetros que pode atualizar, consulte a documentação gcloud container azure node-pools update e projects.locations.azureNodePools.patch.

Processo de atualização

Esta secção descreve os processos que o GKE no Azure usa para atualizar um conjunto de nós. O processo é diferente consoante a extensão das alterações necessárias ao conjunto de nós.

Atualização apenas de configuração

Se o GKE no Azure puder atualizar um conjunto de nós sem reiniciar nem recriar recursos, faz essas alterações. Por exemplo, a atualização das anotações do node pool não reinicia nenhuma instância.

Atualização gradual

Quando uma alteração a um node pool requer o reinício das máquinas virtuais existentes, por exemplo, quando atualiza a versão do Kubernetes, o GKE no Azure executa os seguintes passos:

  1. Modifique o conjunto de dimensionamento de máquinas virtuais do node pool com a nova configuração.
  2. Escolha a instância subjacente de um nó para atualizar.
  3. O GKE no Azure isola e esvazia o nó. Neste momento, não é possível agendar novos pods no nó de destino. Os objetos Pod existentes no nó de destino são reagendados para outros nós. Os pods que não podem ser reagendados para nenhum outro nó existente permanecem na fase Pendente até poderem ser agendados.
  4. Atualize a instância para receber a configuração mais recente do respetivo conjunto de dimensionamento de máquinas virtuais.
  5. Volte a criar a imagem e reinicie a instância.
  6. Aguarde até que todos os nós neste conjunto de nós fiquem em bom estado.
  7. Se todos os nós neste conjunto de nós estiverem em bom estado, selecione outro nó até que todos os nós sejam atualizados. Se algum nó não estiver em bom estado, o GKE no Azure coloca o conjunto de nós num estado DEGRADED. Para mais informações, consulte o artigo Atualizações com falhas.

Proteja as cargas de trabalho durante uma atualização contínua de um conjunto de nós

Durante a atualização contínua do conjunto de nós, o GKE no Azure respeita a configuração do PodDisruptionBudget
durante um máximo de uma hora após o início da drenagem de um nó. Após uma hora, o GKE no Azure elimina todos os pods restantes no nó.

Durante a atualização gradual, o GKE no Azure faz um encerramento elegante de todos os nós a serem reiniciados ou removidos com o melhor esforço durante um máximo de duas horas. Após duas horas, se existirem objetos Pod restantes no nó, o GKE no Azure elimina o nó e repõe a imagem da instância de máquina virtual subjacente.

Redimensionar node pools

Os pools de nós do GKE no Azure têm o redimensionador automático de clusters ativado por predefinição. O redimensionador automático de clusters redimensiona automaticamente o conjunto de nós com base nas exigências das suas cargas de trabalho. Para mais informações sobre o redimensionador automático de clusters, consulte o artigo Redimensionador automático de clusters.

Quando altera o número máximo e mínimo de nós no conjunto de nós, o GKE no Azure toma diferentes ações consoante a nova configuração e o número atual de nós do conjunto de nós. Estas ações incluem o seguinte:

  • Se a contagem de nós atual do conjunto de nós já estiver dentro do novo intervalo, o GKE no Azure não altera o número de nós no conjunto.

  • Se o novo número mínimo de nós for superior ao número atual de nós do conjunto de nós, o GKE no Azure adiciona mais nós até que o conjunto de nós atinja o novo tamanho mínimo.

  • Se o novo número máximo de nós for inferior ao número atual de nós do conjunto de nós, o GKE no Azure reduz o tamanho do conjunto de nós através das seguintes ações:

    1. Atualize a configuração da escala automática no conjunto de dimensionamento da máquina virtual no node pool
    2. Selecione um nó para remover
    3. Isolar e drenar o nó
    4. Elimine a instância da máquina virtual subjacente
    5. Aguarde até que a máquina virtual eliminada desapareça completamente
    6. Efetue a verificação de funcionamento em todo o node pool
    7. Repita até que o número de nós atinja o número desejado

Como o GKE no Azure protege as cargas de trabalho durante a alteração do tamanho do conjunto de nós

Durante a alteração do tamanho do conjunto de nós, o GKE no Azure respeita a configuração do PodDisruptionBudget durante um máximo de uma hora após o início da drenagem de um nó. Após uma hora, o GKE no Azure elimina todos os objetos Pod restantes no nó.

Durante a alteração do tamanho do conjunto de nós, o GKE no Azure executa um encerramento normal de todos os nós a serem reiniciados ou removidos e aguarda até duas horas. Após duas horas, se existirem objetos Pod restantes no nó, o GKE no Azure elimina a instância de máquina virtual subjacente.

Verifique se existe um estado de atualização com falha

Se o GKE no Azure realizar uma verificação de funcionamento após uma atualização e a verificação de funcionamento falhar, o conjunto de nós é marcado como DEGRADED. Pode encontrar informações de estado no seu cluster com o seguinte comando da CLI gcloud:

gcloud container azure node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do seu node pool
  • CLUSTER_NAME: o nome do seu cluster
  • GOOGLE_CLOUD_LOCATION: a Google Cloud região que gere o seu cluster

O resultado inclui informações sobre o estado e a configuração do seu conjunto de nós.

Pré-requisitos

Para atualizar um conjunto de nós, tem de ter a autorização do gkemulticloud.googleapis.com/azureNodePools.update Identity and Access Management.

Atualize um node pool

Pode atualizar um node pool com a Google Cloud CLI. Para atualizar um node pool, execute o seguinte comando:

gcloud container azure node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES     

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool a atualizar
  • CLUSTER_NAME: o nome do cluster ao qual anexar o grupo de nós
  • GOOGLE_CLOUD_LOCATION: a região suportada Google Cloud que gere o seu cluster, por exemplo, us-west1
  • NODE_POOL_VERSION: a nova versão do conjunto de nós suportada
  • MIN_NODES: o novo número mínimo de nós que o node pool pode conter. Tem de ser 0 ou superior.
  • MAX_NODES: o novo número máximo de nós que o node pool pode conter. Tem de ter, pelo menos, 1 e o valor de MIN_NODES.

Cancelar uma operação de atualização

Para cancelar uma operação de atualização do conjunto de nós em curso, execute o seguinte comando:

gcloud container azure operations cancel OPERATION_NAME

Substitua OPERATION_NAME pelo nome da operação de atualização.

Tenha em atenção que o cancelamento de uma operação de pool de nós de atualização em curso não reverte as atualizações de nós que já foram concluídas. Isto pode resultar num conjunto de nós parcialmente atualizado.

O que se segue?