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:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Na lista de clusters, clique no nome do cluster que quer ver.
Clique no separador Nós.
Em Conjuntos de nós, clique no nome do conjunto de nós que quer ver.
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:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Na lista de clusters, clique no nome do cluster que quer modificar.
Clique no separador Nós.
Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar.
Na página Detalhes do conjunto de nós, clique em edit Editar.
Em Gestão, selecione a caixa de verificação Ativar atualização automática.
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, comous-central1
ouus-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:
Aceda à página do Google Kubernetes Engine na Google Cloud consola.
Na lista de clusters, clique no nome do cluster que quer modificar.
Clique no separador Nós.
Em Conjuntos de nós, clique no nome do conjunto de nós que quer modificar.
Na página Detalhes do conjunto de nós, clique em edit Editar.
Em Gestão, desmarque a caixa de verificação Ativar atualização automática.
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.
Obtenha o ID da operação de atualização:
gcloud container operations list \ --location=CONTROL_PLANE_LOCATION
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, comous-central1
ouus-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, comous-central1
ouus-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, comous-central1
ouus-central1-a
.
Consulte a gcloud container node-pools complete-upgrade
documentação.
O que se segue?
- Saiba mais sobre os pools de nós.
- Saiba mais sobre as atualizações de clusters e conjuntos de nós.
- Atualize manualmente um cluster ou um node pool.
- Saiba mais sobre os canais de lançamento.
- Resolva problemas de atualizações de clusters.