Nós de upgrade automático


Nesta página, mostramos como configurar upgrades automáticos de nós no Google Kubernetes Engine (GKE).

Visão geral

Com os upgrades automáticos de nós, os nós do cluster acompanham a versão do plano de controle do cluster quando o plano de controle é atualizado em nome do usuário. Quando você cria um novo cluster ou pool de nós com o console do Google Cloud ou com o comando gcloud, o upgrade automático de nós é ativado por padrão.

Saiba mais sobre upgrades de nós e clusters.

Os upgrades automáticos de nós oferecem vários benefícios:

  • Menor sobrecarga no gerenciamento: não é preciso rastrear e atualizar manualmente os nós quando o plano de controle recebe um upgrade em seu nome.
  • Mais segurança: às vezes, novos binários são lançados para corrigir um problema de segurança. Com upgrades automáticos, o GKE garante automaticamente que as atualizações de segurança sejam aplicadas e atualizadas.
  • Facilidade de uso: fornece uma maneira simples de manter seus nós atualizados com os recursos mais recentes do Kubernetes.

Pools de nós com upgrades automáticos ativados são programados para upgrades quando satisfazem os critérios de seleção (anunciados nas notas de lançamento). Os lançamentos são divididos em várias semanas para garantir a estabilidade do cluster e da frota. Quando o upgrade é realizado, os nós são esvaziados e recriados para corresponder à versão atual do plano de controle. As modificações no disco de inicialização da VM do nó não são mantidas na recriação dos nós. Para manter as modificações durante a recriação dos nós, use um DaemonSet.

O upgrade automático de nós não está disponível para clusters Alfa. Se você estiver usando um cluster com pools de nós do Windows Server, consulte Como fazer upgrade dos pools de nós do Windows Server antes de ativar o upgrade automático de nós.

Verificar o estado do upgrade automático de um pool de nós

É possível verificar se o upgrade automático está ativado ou desativado para um pool de nós usando o console do Google Cloud ou o comando gcloud.

gcloud

Para verificar o estado do upgrade automático de um pool de nós, execute o comando a seguir:

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --zone COMPUTE_ZONE

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster que contém o pool de nós.
  • COMPUTE_ZONE: a zona do Compute para o cluster.

Console

Para verificar o estado do upgrade automático de um pool de nós, faça o seguinte:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer ver.

  3. Clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool que você quer visualizar.

  5. Na página Detalhes do pool de nós, em Gerenciamento, veja o valor do campo Upgrade automático.

Ativar upgrades automáticos de nós para um pool de nós

Quando você cria um novo cluster com o console do Google Cloud ou com o comando gcloud, o upgrade automático de nós é ativado por padrão.

É possível ativar o upgrade automático de nós se ele estiver desativado.

gcloud

Para ativar os upgrades automáticos para um pool de nós atual, execute o comando abaixo:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós.
  • CLUSTER_NAME: o nome do cluster que contém o pool de nós.
  • COMPUTE_ZONE: a zona do Compute para o cluster.

Console

Para ativar upgrades automáticos para um pool de nós atual, execute as etapas abaixo:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar.

  6. Em Gerenciamento, marque a caixa de seleção Ativar upgrade automático.

  7. Clique em Save.

Para ter mais controle sobre quando os nós podem ser atualizados automaticamente, considere configurar janelas de manutenção e exclusões.

Verificar o status dos upgrades de nó

É possível verificar o status de um upgrade usando gcloud container operations.

Veja uma lista de todas as operações em execução e concluídas no cluster:

gcloud container operations list

Cada operação recebe um código e um tipo, além de horários de início e término, cluster de destino e status. A lista é semelhante ao exemplo a seguir:

NAME                              TYPE                ZONE           TARGET              STATUS_MESSAGE  STATUS  START_TIME                      END_TIME
operation-1505407677851-8039e369  CREATE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT16:47:57.851933021Z  20xx-xx-xxT16:50:52.898305883Z
operation-1505500805136-e7c64af4  UPGRADE_CLUSTER     us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:40:05.136739989Z  20xx-xx-xxT18:41:09.321483832Z
operation-1505500913918-5802c989  DELETE_CLUSTER      us-west1-a     my-cluster                          DONE    20xx-xx-xxT18:41:53.918825764Z  20xx-xx-xxT18:43:48.639506814Z

Para ver mais informações sobre uma operação específica, informe o ID da operação, conforme mostrado no comando a seguir:

gcloud container operations describe OPERATION_ID

Exemplo:

gcloud container operations describe operation-1507325726639-981f0ed6
endTime: '20xx-xx-xxT21:40:05.324124385Z'
name: operation-1507325726639-981f0ed6
operationType: UPGRADE_CLUSTER
selfLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/operations/operation-1507325726639-981f0ed6
startTime: '20xx-xx-xxT21:35:26.639453776Z'
status: DONE
targetLink: https://container.googleapis.com/v1/projects/.../kubernetes-engine/docs/zones/us-central1-a/clusters/...
zone: us-central1-a

Verificar as configurações de upgrade do pool de nós

É possível ver detalhes sobre a estratégia de upgrade de nós que está sendo usada para os pools de nós usando o comando gcloud container node-pools describe. Para upgrades em azul-verde, o comando também retorna a fase atual do upgrade.

Execute este comando:

gcloud container node-pools describe NODE_POOL_NAME \
--cluster=CLUSTER_NAME

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós a ser descrito.
  • CLUSTER_NAME: o nome do cluster do pool de nós a ser descrito.

Este comando exibirá as configurações de upgrade atuais. No exemplo a seguir, a saída será exibida se você estiver usando a estratégia de upgrade azul-verde.

upgradeSettings:
  blueGreenSettings:
    nodePoolSoakDuration: 1800s
    standardRolloutPolicy:
      batchNodeCount: 1
      batchSoakDuration: 10s
  strategy: BLUE_GREEN

Se você estiver usando a estratégia de upgrade azul-verde, a saída também incluirá detalhes sobre as configurações de upgrade azul-verde e a fase intermediária atual. O exemplo a seguir mostra como isso pode ser feito:

updateInfo:
  blueGreenInfo:
    blueInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{BLUE_INSTANCE_GROUP_NAME}
    bluePoolDeletionStartTime: {BLUE_POOL_DELETION_TIME}
    greenInstanceGroupUrls:
    - https://www.googleapis.com/compute/v1/projects/{PROJECT_ID}/zones/{LOCATION}/instanceGroupManagers/{GREEN_INSTANCE_GROUP_NAME}
    greenPoolVersion: {GREEN_POOL_VERSION}
    phase: DRAINING_BLUE_POOL

Desativar upgrades automáticos do nó

Embora não seja recomendado, você poderá desativar o upgrade automático de nós para um pool de nós se o cluster subjacente não estiver inscrito em um canal de lançamento.

Considerações antes de desativar os upgrades automáticos de nós

Se você desativar os upgrades automáticos de nós para um pool de nós, o GKE não atualizará a versão deles. Desativar os upgrades automáticos de nós não impede que o GKE faça upgrade do plano de controle do cluster.

A desativação impede atualizações de versão, mas não todas as tarefas de manutenção

Desativar os upgrades automáticos de nós impede apenas que o GKE atualize a versão dos nós, mas não impede que o GKE inicie outras tarefas de manutenção. Por exemplo, mesmo com upgrades automáticos de nós desativados, acionar Rotação de endereços IP ,ativação da política de rede ou migração de PSC em um cluster recria todos os nós na mesma versão que o plano de controle, independente da versão selecionada para o pool de nós. Para controlar o tempo da manutenção, use Janelas e exclusões de manutenção.

Desativar significa a responsabilidade pela compatibilidade dos nós do plano de controle

Ao fazer isso, você precisa garantir que os nós do cluster executem uma versão compatível com a versão do cluster e que a versão esteja em conformidade com a versão do Kubernetes e a política de suporte de diferença de versão (em inglês). A partir da versão 1.19, o GKE faz upgrade dos nós que executam uma versão sem suporte depois que a versão atinge o fim da vida útil. Isso garante a integridade e o alinhamento do cluster com a política de desvio da versão de código aberto. Os nós que executam versões sem suporte não podem ser atualizados imediatamente após o fim da vida útil da versão, e o tempo real pode variar a critério do Google.

A desativação não interrompe as operações em andamento

Desativar os upgrades automáticos de nós não interrompe nem cancela upgrades em andamento para nós em pools de nós. Para cancelar ou interromper upgrades em andamento, consulte Como cancelar um upgrade de nós. Cancelar um upgrade de nó pode ser útil em situações em que você encontra falhas nas cargas de trabalho em nós atualizados e quer evitar mais interrupções.

Se o upgrade estiver totalmente concluído para todo o pool de nós, ele não poderá ser revertido nem cancelado. Para fazer downgrade do pool de nós, consulte Como fazer downgrade de pools de nós.

Ativar upgrades automáticos de nós para um pool de nós

gcloud

Para desativar upgrades automáticos para um pool de nós existente, execute o comando abaixo:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --no-enable-autoupgrade

Console

Para desativar upgrades automáticos para um pool de nós atual, execute as etapas abaixo:

  1. Acesse a página Google Kubernetes Engine no console do Google Cloud.

    Acessar o Google Kubernetes Engine

  2. Na lista de clusters, clique no nome do cluster que você quer modificar.

  3. Clique na guia Nós.

  4. Em Pools de nós, clique no nome do pool que você quer modificar.

  5. Na página Detalhes do pool de nós, clique em Editar.

  6. Em Gerenciamento, desmarque a caixa de seleção Ativar upgrade automático.

  7. Clique em Salvar para modificar o cluster.

Criar um cluster ou pool de nós com upgrades automáticos de nós ativados

gcloud

Para criar um cluster com os upgrades automáticos ativados para o pool de nós padrão, especifique a sinalização --enable-autoupgrade no comando gcloud container clusters create:

gcloud container clusters create CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Para criar um pool de nós com o upgrade automático ativado, especifique a sinalização --enable-autoupgrade no comando gcloud container node-pools create:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --zone COMPUTE_ZONE \
    --enable-autoupgrade

Console

Os clusters e os pools de nós criados com o console do Google Cloud têm os upgrades automáticos ativados por padrão. Acesse Como criar um cluster ou Como adicionar e gerenciar pools de nós para ver instruções sobre como criar clusters e pools de nós.

É possível desativar upgrades automáticos para novos pools de nós. Na página de criação do cluster, clique no nome do pool de nós que você quer modificar e desmarque a opção Ativar upgrade automático.

Receber notificações de upgrade

O GKE publica notificações de upgrade no Pub/Sub, fornecendo um canal para receber informações do GKE sobre seus clusters.

Para mais informações, consulte Como receber notificações de upgrade de cluster.

Mudar os parâmetros de upgrade súbito

Para saber mais sobre como alterar os parâmetros de upgrade de sobretensão, consulte Configurar upgrades de sobrecarga.

Controle de exercícios durante um upgrade do pool de nós

Durante os upgrades automáticos e de pool de nós iniciados manualmente, as seguintes ações podem ser realizadas.

Cancelar um upgrade do pool de nós

Você pode cancelar um upgrade a qualquer momento. Para saber mais sobre o que acontece quando você cancela um upgrade súbito, consulte Cancelar um upgrade súbito. Para saber mais sobre o que acontece quando você cancela um upgrade azul-verde, consulte Cancelar um upgrade azul-verde.

  1. Consiga o ID da operação de upgrade:

    gcloud container operations list
    
  2. Cancelar o upgrade:

    gcloud container operations cancel OPERATION_ID
    

Consulte a documentação gcloud container operations cancel.

Retomar um upgrade do pool de nós

É possível retomar um upgrade iniciando-o manualmente novamente, especificando a versão de destino do upgrade original.

Por exemplo, se você pausou um upgrade em andamento para a versão 1.23.1-gke.100, é possível retomar o upgrade cancelado iniciando o mesmo upgrade novamente no pool de nós, segmentando a versão 1.23.1-gke.100.

Para saber mais sobre o que acontece quando você retoma um upgrade, consulte Retomar um upgrade súbito e Upgrade azul-verde.

Para retomar um upgrade, use o seguinte comando:

    gcloud container clusters upgrade CLUSTER_NAME \
      --node-pool=NODE_POOL_NAME \
      --cluster-version VERSION

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós em que você quer retomar o upgrade dele.
  • CLUSTER_NAME: o nome do cluster do pool de nós em que você quer retomar o upgrade.
  • VERSION: a versão de destino do upgrade do pool de nós cancelado.

Para mais informações, consulte a documentação gcloud container clusters upgrade.

Reverter um upgrade do pool de nós

É possível reverter um pool de nós para fazer downgrade dos nós atualizados para o estado original antes do início do upgrade.

Use o comando rollback se um upgrade em andamento tiver sido cancelado, tiver ocorrido falha no upgrade ou ele estiver incompleto devido a uma janela de manutenção tempo limite. Como alternativa, se você quiser especificar a versão, siga as instruções para fazer downgrade do pool de nós.

Para saber mais sobre o que acontece quando você reverte um upgrade de pool de nós, consulte Reverter um upgrade súbito ou Reverter um upgrade azul-verde.

Para reverter um upgrade, execute o seguinte comando:

gcloud container node-pools rollback NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós para reverter o upgrade do pool de nós.
  • CLUSTER_NAME: o nome do cluster do pool de nós para onde reverter o upgrade.

Consulte a documentação gcloud container node-pools rollback.

Concluir um upgrade do pool de nós

Se você estiver usando a estratégia de upgrade azul-verde, poderá concluir um upgrade do pool de nós durante a fase de imersão, pulando o restante do tempo de imersão.

Para saber como fazer um upgrade do pool de nós, consulte Concluir um upgrade do pool de nós.

Para concluir um upgrade usando a estratégia azul-verde, execute o seguinte comando:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
  --cluster CLUSTER_NAME

Substitua:

  • NODE_POOL_NAME: o nome do pool de nós em que você quer concluir o upgrade.
  • CLUSTER_NAME: o nome do cluster do pool de nós para o qual você quer concluir o upgrade.

Consulte a documentação gcloud container node-pools complete-upgrade.

A seguir