Como fazer o upgrade de um cluster de contêiner

Esta página explica como fazer upgrade ou downgrade da versão do Kubernetes executada pelo cluster do Kubernetes Engine.

As novas versões principais do Kubernetes são lançadas aproximadamente a cada três meses. No Kubernetes Engine, as novas versões são apresentadas em uma programação que é publicada nas notas de lançamento de cada versão. Novos clusters do Kubernetes Engine são criados com a versão estável mais recente do Kubernetes. No entanto, os clusters existentes não receberão upgrade automático, a menos que você tenha ativado os upgrades automáticos de nodes. Quando uma nova versão do Kubernetes está disponível, o Kubernetes Engine atualiza automaticamente o mestre do cluster. Você também pode iniciar manualmente um upgrade do mestre.

Os nodes não podem executar versões secundárias mais antigas que as duas anteriores à versão do mestre. Por exemplo, se o mestre do cluster estiver executando a versão 1.6, os nodes precisam executar pelo menos a versão 1.5 ou 1.4.

Para saber mais sobre clusters, consulte Arquitetura de cluster de contêiner.

Sobre o upgrade de clusters

Quando você executa um upgrade, o Kubernetes Engine para o agendamento, drena e exclui todos os nodes do cluster e os respectivos pods, um por vez. Os nodes de substituição são recriados a cada 3% de avanço com o mesmo nome dos antecessores. Cada node precisa ser recriado com sucesso para que o upgrade seja concluído. Quando os novos nodes se registram no mestre, o Kubernetes Engine os marca como programáveis.

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

Versões compatíveis

Para encontrar a versão mestre do Kubernetes e do node compatível para upgrades, execute o seguinte comando:

gcloud container get-server-config --zone [COMPUTE_ZONE]

em que [COMPUTE_ZONE] é a zona de computação do projeto, como us-central1-a.

As versões compatíveis também estão documentadas na página Notas da versão.

Como fazer o downgrade

Você pode fazer o downgrade dos nodes para uma versão mais antiga que a principal.

Para ver a lista de versões de node válidas, execute o seguinte comando:

gcloud container get-server-config --zone [COMPUTE_ZONE]

Como salvar seus dados em discos permanentes

Os dados armazenados no host emptyDir e volumes hostPath são excluídos durante os upgrades.

Antes de executar um upgrade, você precisa verificar se os dados que quer manter estão armazenados em um pod com um volume de disco permanente no Google Compute Engine. 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 nodes 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 node existente, consulte Como adicionar ou redimensionar discos permanentes.

Como fazer upgrade dos nodes manualmente

Console

Para criar um cluster usando o Console do GCP, siga estas etapas:

  1. Acesse o menu "Kubernetes Engine" no Console do GCP.

    Acessar o menu "Kubernetes Engine"

  2. Selecione o cluster desejado.

  3. Clique em Editar.
  4. No menu Pools de nós, selecione o pool desejado.
  5. Em Versão do node, clique em Alterar.
  6. Selecione a versão desejada e clique em Alterar.
  7. Clique em Salvar.

gcloud

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

gcloud container clusters upgrade [CLUSTER_NAME] [--zone [COMPUTE_ZONE]]

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]] [--zone [COMPUTE_ZONE]]

em que [CLUSTER_VERSION] é a versão do Kubernetes para a qual o upgrade dos nodes será feito, no formato x.x.x. Por exemplo, --cluster-version=1.7.2.

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

Como fazer o upgrade dos nodes automaticamente

Com os upgrades automáticos, o Kubernetes Engine atualiza a versão dos nodes para a mais nova disponível.

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

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 node

Você pode cancelar um upgrade a qualquer momento. Quando você cancela um upgrade:

  • os nodes que iniciaram o upgrade o concluem;
  • os nodes que não iniciaram o upgrade não prosseguem com a operação;
  • os nodes 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 do gcloud beta container operations cancel.

Como reverter um upgrade do node

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] [--zone [COMPUTE_ZONE]]

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.

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

Inicie manualmente um upgrade do mestre

Você pode fazer o upgrade manual dos mestres usando o Console do Google Cloud Platform ou a ferramenta de linha de comando gcloud. Depois que você fizer upgrade do mestre do cluster, será possível fazer upgrade dos nodes para a mesma versão.

Console

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

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

    Acessar o menu "Kubernetes Engine"

  2. Selecione o cluster desejado.

  3. Na Versão principal no menu Cluster, clique em Atualização disponível.
  4. Selecione a versão desejada e clique em Alterar.

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 [--zone [COMPUTE_ZONE]]

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

gcloud container clusters upgrade [CLUSTER_NAME] --master [--zone [COMPUTE_ZONE]]

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 do gcloud container clusters upgrade.

Próximas etapas

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

Enviar comentários sobre…