Fazer o upgrade de um cluster

Nesta página, explicamos como fazer upgrade ou downgrade da versão do Kubernetes executada pelo cluster do Google Kubernetes Engine.

Consulte Controle de versão e upgrades para saber como as versões do Kubernetes são disponibilizadas para o mestre do cluster e os nós. Para saber mais sobre clusters, consulte Arquitetura de cluster.

Antes de começar

Prepare-se para a tarefa tomando as seguintes medidas:

  • Verifique se você ativou a API Google Kubernetes Engine.
  • Ativar a API Google Kubernetes Engine
  • Verifique se o SDK do Cloud está instalado.
  • Defina o código do projeto padrão:
    gcloud config set project [PROJECT_ID]
  • Se você estiver trabalhando com clusters zonais, defina a zona de computação padrão:
    gcloud config set compute/zone [COMPUTE_ZONE]
  • Se você estiver trabalhando com clusters regionais, defina a região de computação padrão:
    gcloud config set compute/region [COMPUTE_REGION]
  • Atualize a gcloud para a versão mais recente:
    gcloud components update

Sobre o upgrade de clusters

Fazer o upgrade de clusters é um processo de duas partes que envolve o upgrade do mestre e/ou dos nós do cluster. Não é possível fazer o upgrade do mestre e dos nós do cluster simultaneamente.

O Google faz o upgrade dos mestres automaticamente, mas é possível optar por fazer o upgrade manualmente.

Ao fazer o upgrade dos nós do cluster, o GKE interrompe a programação de novos pods, reprograma os pods atuais em nós diferentes e exclui todos os nós, um de cada vez. Se levar mais de 10 minutos para que um pod seja excluído, o GKE forçará o término desse pod para encerrar e excluir o nó. Os nós substitutos são recriados com o mesmo nome dos antecessores. O upgrade será concluído apenas quando todos os nós forem recriados e o cluster assumir o estado desejado. Quando nós novos são registrados no mestre, o GKE os marca como programáveis.

As novas instâncias de nó executam a versão do Kubernetes desejada e também:

Versões compatíveis

Para encontrar as versões principal e de nó compatíveis do Kubernetes para fazer upgrades e downgrades, execute o seguinte comando:

gcloud container get-server-config

Não é recomendável fazer downgrade de um cluster. É possível fazer o downgrade dos nós para uma versão de patch mais antiga que a versão mestre. No entanto, não é possível fazer downgrade de um cluster de uma versão secundária para outra. Por exemplo, se um cluster estiver executando o GKE 1.11.5, será possível fazer o downgrade para a versão 1.11.4 (se ainda estiver disponível), mas não para a versão 1.10.9. Em vez disso, um erro como o abaixo será gerado:

ERROR: (gcloud.container.clusters.upgrade) ResponseError: code=400,
message=Master cannot be upgraded to "1.10.9-gke.7": specified version is not
newer than the current version.

Para fazer o downgrade de um cluster para uma versão de patch anterior, atualize a versão do mestre usando a ferramenta de linha de comando gcloud.

As versões do GKE são lançadas de acordo com a programação em Versões compatíveis. O processo leva alguns dias para alcançar todas as zonas. Use o gcloud container get-server-config para verificar quais versões estão disponíveis em uma zona ou região.

Como salvar seus dados em discos permanentes

Antes de fazer upgrade de um pool de nós, garanta que todos os dados que você quer manter estejam armazenados em um pod com volumes permanentes que usem discos permanentes. Em vez de apagados, os discos permanentes são desconectados durante os upgrades, e os dados deles são "distribuídos" entre os pods.

As seguintes restrições são relacionadas aos discos permanentes:

  • Os pods estão em execução nos nós que precisam ser VMs do Compute Engine.
  • Essas VMs precisam estar no mesmo projeto e zona do Compute Engine que o disco permanente.

Para saber como adicionar um disco permanente a uma instância de nó atual, consulte Como adicionar ou redimensionar discos permanentes.

Como fazer upgrade manual dos nós

É possível atualizar manualmente seus nós usando o Console do Google Cloud Platform ou a ferramenta de linha de comando gcloud.

gcloud

O comando a seguir faz o upgrade dos nodes para a versão principal em execução:

gcloud container clusters upgrade [CLUSTER_NAME]

em que [CLUSTER_NAME] é o nome do cluster que receberá o upgrade.

Para instalar uma versão específica do Kubernetes, use a sinalização opcional --cluster-version:

gcloud container clusters upgrade [CLUSTER_NAME] --cluster-version [CLUSTER_VERSION]

em que [CLUSTER_VERSION] é a versão do Kubernetes para que os nós são atualizados. Por exemplo, --cluster-version=1.7.2 ou cluster-version=latest.

Para mais informações sobre como especificar versões, consulte a documentação Controle de versão e upgrades.

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

Console

Para fazer upgrade de um cluster usando o console do GCP, siga estas etapas:

  1. Acesse o menu do Google Kubernetes Engine no console do GCP.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão de edição do cluster, que tem a forma de um lápis.

  3. Na seção Pools de nós, expanda a seta de divulgação do pool de nós que você quer atualizar.

  4. Clique no link Alterar ao lado da Versão do nó.

  5. Selecione a versão pretendida e clique em Alterar.

  6. Clique em Salvar.

Como fazer upgrade automático dos nós

Com os upgrades automáticos de nó, o GKE faz upgrade da versão do Kubernetes nos nós sempre que uma mais nova é disponibilizada.

Para ativar os upgrades automáticos de nó, consulte a documentação Upgrades automáticos de nó.

Como verificar o status do upgrade

Para verificar o status de um upgrade, use gcloud beta container operations.

Para ver uma lista de todas as operações executadas e concluídas no cluster, execute o seguinte comando:

gcloud beta 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 determinada operação, especifique o código dela no seguinte comando:

gcloud beta container operations describe [OPERATION_ID]

Por exemplo:

gcloud beta 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

Como cancelar um upgrade de nó

É possível cancelar um upgrade a qualquer momento. Quando você cancela um upgrade:

  • os nodes que iniciaram o upgrade o concluem;
  • os nós que não iniciaram o upgrade não prosseguem com a operação;
  • os nós que já foram concluídos com sucesso não são afetados nem revertidos.

Primeiro, consiga o código da operação do upgrade com o seguinte comando:

gcloud container operations list

Em seguida, para cancelar o upgrade, execute o seguinte comando:

gcloud beta container operations cancel [OPERATION_ID]

Consulte a documentação de gcloud container operations cancel.

Como reverter um upgrade do nó

Quando o upgrade falha ou é cancelado, é possível reverter os pools de nós para a versão anterior do Kubernetes. Não é possível revertê-los depois da atualização. Os nodes que não iniciaram um upgrade não são afetados.

Para reverter um upgrade, execute o seguinte comando:

gcloud container node-pools rollback [POOL_NAME] --cluster [CLUSTER_NAME]

em que:

  • [POOL_NAME] é o nome do pool de nós para a reversão;
  • [CLUSTER_NAME] é o nome do cluster em que o pool de nós será revertido;
  • [COMPUTE_ZONE] é a zona de computação do seu projeto.

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

Iniciar manualmente um upgrade do mestre

Ao iniciar o upgrade do mestre, não será possível modificar a configuração do cluster por vários minutos, até que o plano de controle esteja novamente acessível. Caso seja necessário evitar o tempo de inatividade durante upgrades do mestre, pense em usar um cluster regional.

É possível fazer upgrade manual dos seus mestres usando o Console do GCP ou a ferramenta de linha de comando gcloud. Depois que você fizer upgrade do mestre do cluster, será possível fazer upgrade dos nós para a mesma versão.

gcloud

Para fazer upgrade da versão do mestre do cluster, primeiro execute o seguinte comando para ver as versões disponíveis:

gcloud container get-server-config

Para fazer upgrade para a versão mais recente, execute o seguinte comando:

gcloud container clusters upgrade [CLUSTER_NAME] --master

Para fazer upgrade para uma versão específica que não é a padrão, execute o seguinte comando:

gcloud container clusters upgrade [CLUSTER_NAME] --master --cluster-version [CLUSTER_VERSION]

Consulte a documentação de gcloud container clusters upgrade.

Console

Para atualizar manualmente o mestre do cluster, siga estas etapas:

  1. Acesse o menu do Google Kubernetes Engine no console do Google Cloud Platform.

    Acessar o menu do Google Kubernetes Engine

  2. Selecione o cluster pretendido.

  3. Clique no link Upgrade disponível ao lado da Versão principal.

  4. Selecione a versão pretendida e clique em Alterar.

  5. Clique na seta na parte superior da tela para voltar para a página de visão geral do cluster.

A seguir

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Kubernetes Engine