Atualizar um pool de nós

Neste tópico, explicamos como atualizar seus pools de nós. É possível atualizar seus pools de nós pelos seguintes motivos:

  • Para fazer upgrade da versão do pool de nós
  • Para alterar o número de nós no pool de nós
  • Para alterar as anotações do pool de nós (atualizável somente por meio da API)

Também é possível alterar outros parâmetros nos pools de nós não listados acima. Para ver uma lista completa de parâmetros que é possível atualizar, consulte as documentações gcloud container azure node-pools update e projects.locations.azureNodePools.patch.

Atualizar processo

Nesta seção, descrevemos os processos que o GKE no Azure usa para atualizar um pool de nós. O processo é diferente, dependendo da extensão das alterações necessárias no pool de nós.

Atualização apenas de configuração

Se os clusters do GKE no Azure puderem atualizar um pool de nós sem reiniciar ou recriar qualquer recurso, essas alterações serão feitas. Por exemplo, atualizar as anotações do pool de nós não reiniciará nenhuma instância.

Atualização gradual

Quando uma alteração em um pool de nós requer a reinicialização de máquinas virtuais atuais, por exemplo, ao atualizar a versão do Kubernetes, o GKE no Azure realiza as seguintes etapas:

  1. Modifique o conjunto de escalas da máquina virtual do pool de nós com a nova configuração.
  2. Escolha a instância subjacente de um nó para atualizar.
  3. O GKE no Azure delimita e consome o nó. Neste ponto, não é possível programar novos pods no nó de destino. Os objetos de pod atuais no nó de destino são reprogramados para outros nós. Os pods que não podem ser reprogramados para qualquer outro nó permanecem na fase Pendente até que possam ser programados.
  4. Atualize a instância para usar a configuração mais recente do conjunto de escalas de máquinas virtuais.
  5. Recrie e reinicialize a instância.
  6. Aguarde até que todos os nós neste pool se tornem íntegros.
  7. Se todos os nós neste pool estiverem íntegros, selecione outro nó até que todos os nós sejam atualizados. Se algum nó não estiver íntegro, o GKE no Azure colocará o pool de nós em um estado DEGRADED. Para mais informações, consulte Atualizações com falha.

Proteger cargas de trabalho durante uma atualização contínua do pool de nós

Durante a atualização gradual do pool de nós, o GKE no Azure cumpre a configuração
de PodDisruptionBudget por até uma hora após um nó começar a ser consumido. Depois de uma hora, o GKE no Azure exclui todos os pods restantes no nó.

Durante a atualização gradual, o GKE no Azure realiza um encerramento simples dos nós a serem reiniciados ou removidos com o melhor esforço por até duas horas. Depois de duas horas, se houver qualquer objeto de pod restante no nó, o GKE no Azure excluirá o nó e recriará a instância de máquina virtual subjacente.

Como redimensionar pools de nós

Os pools de nós do GKE no Azure têm o escalonador automático de cluster ativado por padrão. O escalonador automático de cluster redimensiona automaticamente o pool de nós com base nas demandas das cargas de trabalho. Para mais informações sobre o escalonador automático de cluster, consulte Escalonador automático de cluster.

Quando você altera o número máximo e mínimo de nós no pool de nós, o GKE no Azure realiza ações diferentes, dependendo da nova configuração e do número de nós atual do pool de nós. Essas ações incluem o seguinte:

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

  • Se o novo número mínimo de nós for maior que a contagem atual de nós do pool de nós, o GKE no Azure irá adicionar mais nós até que o pool alcance o novo tamanho mínimo.

  • Se o novo número máximo de nós for menor que a contagem atual de nós do pool de nós, o GKE no Azure irá reduzir o tamanho do pool de nós executando as seguintes ações:

    1. Atualize a configuração de escalonamento automático na escala de máquina virtual definida no pool de nós
    2. Selecione um nó a ser removido
    3. Restringir e drenar o nó
    4. Exclua a instância de máquina virtual subjacente
    5. Aguarde até que a máquina virtual seja totalmente excluída
    6. Faça verificação de integridade em todo o pool de nós
    7. Repita até que o número de nós alcance o número desejado

Como o GKE no Azure protege as cargas de trabalho durante o redimensionamento do pool de nós

Durante o redimensionamento do pool de nós, o GKE no Azure cumpre a configuração de PodDisruptionBudget por até uma hora após um nó começar a ser consumido. Depois de uma hora, o GKE no Azure exclui todos os objetos de pod restantes no nó.

Durante o redimensionamento do pool de nós, o GKE no Azure realiza um encerramento simples de todos os nós que serão reiniciados ou removidos e aguarda até duas horas. Após duas horas, se houver objetos de pod restantes no nó, o GKE no Azure irá excluir a instância de máquina virtual subjacente.

Verificar se há um status de atualização com falha

Se o GKE no Azure realizar uma verificação de integridade após uma atualização e a verificação falhar, o pool de nós será marcado como DEGRADED. É possível encontrar informações de status no cluster com o seguinte comando da Google Cloud CLI:

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

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós
  • CLUSTER_NAME: o nome do cluster.
  • GOOGLE_CLOUD_LOCATION: a região do Google Cloud que gerencia o cluster

A saída inclui informações sobre o status e a configuração do pool de nós.

Pré-requisitos

Para atualizar um pool de nós, é necessário ter a permissão gkemulticloud.googleapis.com/azureNodePools.update do gerenciamento de identidade e acesso.

Atualizar um pool de nós

É possível atualizar um pool de nós com a Google Cloud CLI. Para atualizar um pool de nós, execute:

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:

  • NODE_POOL_NAME: o nome do pool de nós a ser atualizado;
  • CLUSTER_NAME: o nome do cluster ao qual o pool de nós será anexado
  • GOOGLE_CLOUD_LOCATION: a região compatível com o Google Cloud que gerencia seu cluster, por exemplo, us-west1
  • NODE_POOL_VERSION: a nova versão do pool de nós compatível
  • MIN_NODES: o número mínimo de nós que o pool pode conter. Precisa ser 0 ou maior.
  • MAX_NODES: o número máximo de nós que o pool pode conter. Precisa ser pelo menos 1 e ter o valor de MIN_NODES.

Como cancelar uma operação de atualização

Para cancelar uma operação de atualização de pool de nós em andamento, execute o seguinte comando:

gcloud container azure operations cancel OPERATION_NAME

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

O cancelamento de uma operação de atualização de pool de nós que está em andamento não reverte as atualizações de nós que já foram concluídas. Isso pode resultar em um pool de nós parcialmente atualizado.

A seguir