Atualização automática de nós


Esta página mostra como configurar as atualizações automáticas de nós no Google Kubernetes Engine (GKE).

Vista geral

As atualizações automáticas de nós ajudam a manter os nós no seu cluster atualizados com a versão do painel de controlo do cluster quando o painel de controlo é atualizado em seu nome. Quando cria um novo cluster ou um novo node pool com a Google Cloud consola ou o comando gcloud, a atualização automática de nós está ativada por predefinição.

Pode saber mais acerca das atualizações de clusters e nós.

As atualizações automáticas de nós oferecem várias vantagens:

  • Menor sobrecarga de gestão: não tem de monitorizar e atualizar manualmente os nós quando o painel de controlo é atualizado em seu nome.
  • Melhor segurança: por vezes, são lançados novos ficheiros binários para corrigir um problema de segurança. Com as atualizações automáticas, o GKE garante automaticamente que as atualizações de segurança são aplicadas e mantidas atualizadas.
  • Facilidade de utilização: oferece uma forma simples de manter os seus nós atualizados com as funcionalidades mais recentes do Kubernetes.

Os conjuntos de nós com atualizações automáticas ativadas são agendados para atualizações quando cumprem os critérios de seleção (anunciados nas notas de lançamento). As implementações são faseadas ao longo de várias semanas para garantir a estabilidade do cluster e da frota. Quando a atualização é realizada, os nós são esvaziados e recriados para corresponderem à versão atual do plano de controlo. As modificações no disco de arranque de uma VM de nó não persistem nas recriações de nós. Para preservar as modificações na recriação de nós, use um DaemonSet.

A atualização automática de nós não está disponível para clusters alfa. Se estiver a usar um cluster com pools de nós do Windows Server, reveja o artigo Atualizar pools de nós do Windows Server antes de ativar a atualização automática de nós.

Antes de começar

Antes de começar, certifique-se de que realizou as seguintes tarefas:

  • Ative a API Google Kubernetes Engine.
  • Ative a API Google Kubernetes Engine
  • Se quiser usar a CLI gcloud para esta tarefa, instale-a e, em seguida, inicialize-a. Se instalou anteriormente a CLI gcloud, execute gcloud components update para obter a versão mais recente.
  • Certifique-se de que tem um cluster padrão existente. Quando cria um novo cluster com a Google Cloud consola ou o comando da CLI Google Cloud, a atualização automática de nós está ativada por predefinição. Para criar um cluster padrão, consulte o artigo Crie um cluster regional.

Verifique o estado da atualização automática para um conjunto de nós existente

Pode verificar se a atualização automática está ativada ou desativada para um conjunto de nós através da consola Google Cloud ou do comando gcloud.

gcloud

Para verificar o estado da atualização automática de um conjunto de nós, execute o seguinte comando:

gcloud container node-pools describe NODE_POOL_NAME \
  --cluster CLUSTER_NAME \
  --location CONTROL_PLANE_LOCATION

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool.
  • CLUSTER_NAME: o nome do cluster que contém o conjunto de nós.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

Procure o campo autoUpgrade no resultado para ver se as atualizações automáticas estão ativadas ou desativadas para o conjunto de nós.

management:
  autoUpgrade: true

Consola

Para verificar o estado da atualização automática de um conjunto de nós, faça o seguinte:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, clique no nome do conjunto de nós que quer ver.

  5. Na página Detalhes do conjunto de nós, em Gestão, veja o valor do campo Atualização automática.

Ative as atualizações automáticas de nós para um node pool existente

Quando cria um novo cluster com a Google Cloud consola ou o comando gcloud, a atualização automática de nós está ativada por predefinição.

Pode ativar a atualização automática de nós se estiver atualmente desativada.

gcloud

Para ativar as atualizações automáticas para um conjunto de nós existente, execute o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool.
  • CLUSTER_NAME: o nome do cluster que contém o conjunto de nós.
  • CONTROL_PLANE_LOCATION: a localização do Compute Engine do plano de controlo do seu cluster. Indique uma região para clusters regionais ou uma zona para clusters zonais.

Consola

Para ativar as atualizações automáticas para um conjunto de nós existente, siga os passos seguintes:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar.

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

  6. Em Gestão, selecione a caixa de verificação Ativar atualização automática.

  7. Clique em Guardar.

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

Verifique o estado das atualizações de nós

Pode verificar o estado de uma atualização através do gcloud container operations.

Veja uma lista de todas as operações em execução e concluídas no cluster dos últimos 12 dias, se houver menos de 5000 operações, ou as últimas 5000 operações:

gcloud container operations list \
    --location=CONTROL_PLANE_LOCATION

A cada operação é atribuído um ID da operação e um tipo de operação, bem como horas de início e fim, cluster de destino e estado. A lista é semelhante ao seguinte exemplo:

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 obter mais informações sobre uma operação específica, especifique o ID da operação, conforme mostrado no seguinte comando:

gcloud container operations describe OPERATION_ID \
    --location=CONTROL_PLANE_LOCATION

Por 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

Se a atualização foi cancelada ou falhou e está parcialmente concluída, pode retomar ou reverter a atualização.

Verifique as definições de atualização do conjunto de nós

Pode ver detalhes sobre a estratégia de atualização de nós que está a ser usada para os seus conjuntos de nós com o comando gcloud container node-pools describe. Para as atualizações azul-verde, o comando também devolve a fase atual da atualização.

Execute o seguinte comando:

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

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool a descrever.
  • CLUSTER_NAME: o nome do cluster do grupo de nós a descrever.
  • CONTROL_PLANE_LOCATION: a localização (região ou zona) do plano de controlo, como us-central1 ou us-central1-a.

Este comando produz as definições de atualização atuais. O exemplo seguinte mostra o resultado se estiver a usar a estratégia de atualização azul-verde.

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

Se estiver a usar a estratégia de atualização azul-verde, o resultado também inclui detalhes sobre as definições de atualização azul-verde e a respetiva fase intermédia atual. O exemplo seguinte mostra como pode ser apresentado:

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

Desative as atualizações automáticas de nós

Embora não seja recomendado, pode desativar a atualização automática de nós para um node pool existente se o cluster subjacente não estiver inscrito num canal de lançamento.

Considerações antes de desativar as atualizações automáticas de nós

Se desativar as atualizações automáticas de nós para um conjunto de nós, o GKE não atualiza a versão dos nós. A desativação das atualizações automáticas de nós não impede o GKE de atualizar o painel de controlo do cluster.

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

A desativação das atualizações automáticas 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 as atualizações automáticas de nós desativadas, a ativação da rotação de endereços IP, a ativação da política de rede ou a migração do PSC num cluster recria todos os nós na mesma versão que o plano de controlo, independentemente da versão selecionada para o conjunto de nós. Para controlar a sincronização da manutenção, use períodos de manutenção e exclusões.

A desativação significa a responsabilidade pela compatibilidade dos nós do plano de controlo

Se desativar a atualização automática de nós para um node pool, é responsável por garantir que os nós do cluster executam uma versão compatível com a versão do plano de controlo do cluster, em conformidade com a política de discrepância de versões do GKE. A desativação das atualizações automáticas de nós impede apenas que os conjuntos de nós sejam atualizados até ao fim do suporte padrão. O GKE atualiza os nós que estão a executar uma versão não suportada depois de a versão atingir o fim do apoio técnico para garantir o bom funcionamento do cluster.

Para ver detalhes sobre o momento do fim do suporte, consulte o cronograma estimado para os canais de lançamento. Os nós que executam versões não suportadas podem não ser atualizados imediatamente após o fim do suporte da versão, e o momento real pode variar à discrição da Google.

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

A desativação das atualizações automáticas de nós não para nem cancela as atualizações em curso dos nós nos node pools. Para cancelar ou parar atualizações em curso, siga as instruções em Cancelar uma atualização de nó. O cancelamento de uma atualização de nós pode ser útil em situações em que deteta que as cargas de trabalho estão a falhar nos nós atualizados e quer evitar mais interrupções.

Se a atualização estiver totalmente concluída para todo o conjunto de nós, não é possível reverter nem cancelar a atualização. Para alterar para a versão anterior o node pool, consulte o artigo Alterar para a versão anterior os node pools.

Desative as atualizações automáticas de nós para um node pool existente

gcloud

Para desativar as atualizações automáticas para um conjunto de nós existente, execute o seguinte comando:

gcloud container node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --no-enable-autoupgrade

Consola

Para desativar as atualizações automáticas de um pool de nós existente, siga os passos seguintes:

  1. Aceda à página do Google Kubernetes Engine na Google Cloud consola.

    Aceda ao Google Kubernetes Engine

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

  3. Clique no separador Nós.

  4. Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar.

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

  6. Em Gestão, desmarque a caixa de verificação Ativar atualização automática.

  7. Clique em Guardar para modificar o cluster.

Crie um node pool com atualizações automáticas de nós ativadas

gcloud

Para criar um conjunto de nós com a atualização automática ativada, especifique a flag --enable-autoupgrade no comando gcloud container node-pools create:

gcloud container node-pools create NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location CONTROL_PLANE_LOCATION \
    --enable-autoupgrade

Consola

Os clusters e os conjuntos de nós criados com a Google Cloud consola têm as atualizações automáticas ativadas por predefinição. Visite os artigos Criar um cluster ou Adicionar e gerir node pools para obter instruções sobre como criar clusters e node pools.

Pode desativar as atualizações automáticas para novos conjuntos de nós. Na página de criação do cluster, clique no nome do conjunto de nós que quer modificar e, de seguida, desmarque a opção Ativar atualização automática.

Receba notificações de atualizações

O GKE publica notificações de atualizações no Pub/Sub, o que lhe dá um canal para receber informações do GKE sobre os seus clusters.

Para mais informações, consulte o artigo Receber notificações de atualização de clusters.

Altere os parâmetros de atualização por picos

Para saber como alterar os parâmetros de atualização de picos, consulte o artigo Configure atualizações de picos.

Exerça controlo durante uma atualização do node pool

Durante as atualizações automáticas e as atualizações de conjuntos de nós iniciadas manualmente, pode realizar as seguintes ações.

Cancele uma atualização de node pool

Pode cancelar uma atualização em qualquer altura. Para saber mais sobre o que acontece quando cancela uma atualização de pico, consulte o artigo Cancele uma atualização de pico. Para saber mais sobre o que acontece quando cancela uma atualização azul-verde, consulte o artigo Cancele uma atualização azul-verde.

  1. Obtenha o ID da operação de atualização:

    gcloud container operations list \
          --location=CONTROL_PLANE_LOCATION
    
  2. Cancele a atualização:

    gcloud container operations cancel OPERATION_ID \
          --location=CONTROL_PLANE_LOCATION
    

Consulte a gcloud container operations cancel documentação.

Retome uma atualização do node pool

Pode retomar uma atualização iniciando-a manualmente novamente e especificando a versão de destino da atualização original.

Por exemplo, se uma atualização falhou ou se pausou uma atualização em curso, pode retomar a atualização cancelada iniciando novamente a mesma atualização no conjunto de nós, especificando a versão de destino da operação de atualização inicial.

Para saber mais sobre o que acontece quando retoma uma atualização, consulte os artigos Retome uma atualização rápida e atualização azul/verde.

Para retomar uma atualização, use o seguinte comando:

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

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool para o qual quer retomar a atualização do node pool.
  • CLUSTER_NAME: o nome do cluster do node pool para o qual quer retomar a atualização.
  • CONTROL_PLANE_LOCATION: a localização (região ou zona) do plano de controlo, como us-central1 ou us-central1-a.
  • VERSION: a versão de destino da atualização do conjunto de nós cancelada.

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

Reverta uma atualização de um node pool

Pode reverter um node pool para fazer o downgrade dos nós atualizados para o respetivo estado original de antes do início da atualização do node pool.

Use o comando rollback se uma atualização em curso tiver sido cancelada, a atualização tiver falhado ou a atualização estiver incompleta devido a um limite de tempo de janela de manutenção. Em alternativa, se quiser especificar a versão, siga as instruções para fazer o downgrade do conjunto de nós.

Para saber mais sobre o que acontece quando reverte uma atualização de um conjunto de nós, consulte os artigos Reverta uma atualização de picos ou Reverta uma atualização azul/verde.

Para reverter uma atualização, execute o seguinte comando:

gcloud container node-pools rollback NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool para o qual reverter a atualização do node pool.
  • CLUSTER_NAME: o nome do cluster do node pool para o qual reverter a atualização.
  • CONTROL_PLANE_LOCATION: a localização (região ou zona) do plano de controlo, como us-central1 ou us-central1-a.

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

Conclua uma atualização do node pool

Se estiver a usar a estratégia de atualização azul-verde, pode concluir uma atualização do conjunto de nós durante a fase de teste de esforço, ignorando o resto do tempo de teste de esforço.

Para saber como funciona a conclusão de uma atualização de node pool, consulte o artigo Conclua uma atualização de node pool.

Para concluir uma atualização quando usar a estratégia de atualização azul/verde, execute o seguinte comando:

gcloud container node-pools complete-upgrade NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location=CONTROL_PLANE_LOCATION

Substitua o seguinte:

  • NODE_POOL_NAME: o nome do node pool para o qual quer concluir a atualização.
  • CLUSTER_NAME: o nome do cluster do node pool para o qual quer concluir a atualização.
  • CONTROL_PLANE_LOCATION: a localização (região ou zona) do plano de controlo, como us-central1 ou us-central1-a.

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

O que se segue?