Pular uma versão ao fazer upgrade de pools de nós

Na versão 1.29 e mais recentes, o Google Distributed Cloud permite que o plano de controle de um cluster de usuário tenha até duas versões secundárias mais recentes que os pools de nós no cluster. Por exemplo, se o plano de controle de um cluster de usuário estiver na versão 1.29, os pools de nós no cluster poderão estar na versão 1.16, 1.28 ou 1.29. Além disso, o Google Distributed Cloud permite pular uma versão secundária ao atualizar pools de nós. Usando o exemplo anterior, é possível fazer upgrade de pools de nós da versão 1.16 diretamente para a versão 1.29 e ignorar o upgrade para a 1.28. Ignorar uma versão secundária ao fazer upgrade de pools de nós é chamado de upgrade de pular versão.

Os upgrades de versão ignorada são compatíveis com pools de nós do Ubuntu e do COS, mas não com pools de nós do Windows. Além disso, esse recurso não está disponível se você tiver clusters avançados ativados.

Devido às restrições do Kubernetes, o plano de controle de um cluster de usuário precisa ser atualizado uma versão secundária de cada vez. No entanto, o upgrade apenas do plano de controle leva muito menos tempo e é menos arriscado do que atualizar os pools de nós em que as cargas de trabalho são executadas.

Esta página explica alguns dos benefícios de um upgrade de versão pulada e fornece etapas para realizar um upgrade de versão pulada fazendo mudanças no arquivo de configuração e executando gkectl upgrade cluster.

Esta página é destinada a administradores de TI e operadores que gerenciam o ciclo de vida da infraestrutura de tecnologia subjacente. Para saber mais sobre papéis comuns e exemplos de tarefas que mencionamos no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE Enterprise. Nesta página, presumimos que você tenha algum conhecimento sobre como planejar e executar upgrades do Google Distributed Cloud, conforme descrito abaixo:

Benefícios dos upgrades de versão pulada

Esta seção descreve alguns benefícios do uso de upgrades de versão de salto.

É mais fácil manter os clusters em uma versão com suporte

Uma nova versão secundária do Google Distributed Cloud é lançada a cada quatro meses, e cada versão secundária tem um período de suporte de um ano. Para que seus clusters permaneçam dentro da janela de suporte, faça um upgrade de versão secundária aproximadamente a cada quatro meses, conforme mostrado abaixo:

Dez

Jan

Fev

Mar

Abr

Mai

Jun

Jul

Ago

Set

Out

Nov

Dez

Jan

Fev

Mar

Abr

Mai

Jun

Jul

Ago

Set

Out

Nov

Dez

Jan

Fev

Mar

1.14 Fazer upgrade
1.15 Fazer upgrade
1.16 Fazer upgrade
1.28 Fazer upgrade
1,29 Fazer upgrade

Esse requisito impõe desafios quando você precisa de uma janela de validação longa para verificar uma nova versão secundária e uma janela de manutenção curta para atualizar seus clusters para a nova versão secundária. Para superar esses desafios, use um upgrade de versão pulada, que permite que seus clusters permaneçam dentro da janela de suporte fazendo upgrade de um cluster a cada oito meses em vez de quatro meses. A tabela a seguir mostra como pular o upgrade para a versão 1.15 significa que você só faz o upgrade após oito meses em vez de quatro.

Dez

Jan

Fev

Mar

Abr

Mai

Jun

Jul

Ago

Set

Out

Nov

Dez

Jan

Fev

Mar

Abr

Mai

Jun

Jul

Ago

Set

Out

Nov

Dez

Jan

Fev

Mar

1.14 Fazer upgrade
1.15
1.16 Fazer upgrade
1.28
1,29

Pular uma versão secundária ao atualizar os pools de nós reduz o número de upgrades necessários para permanecer em uma versão com suporte. Além disso, não é necessário qualificar a versão secundária pulada, porque ela é usada apenas temporariamente pelo plano de controle.

Janela de manutenção mais curta

Com um upgrade de versão ignorada, não é necessário aumentar a janela de manutenção. O salto de uma versão secundária ao fazer upgrade de pools de nós leva o mesmo tempo que o upgrade para a próxima versão secundária, porque cada nó em um pool de nós é drenado e recriado uma vez. Portanto, um upgrade de versão de salto economiza tempo e reduz a interrupção da carga de trabalho.

Resumo

Em resumo, um upgrade de versão pulada oferece os seguintes benefícios:

  • Atualizar clusters para uma versão com suporte: o Google Distributed Cloud oferece suporte às três versões secundárias mais recentes. Se os clusters estiverem em uma versão sem suporte, dependendo da versão do cluster, pular uma versão secundária ao atualizar os pools de nós pode levar os clusters a uma versão com suporte com menos upgrades.

  • Economize tempo: pular uma versão secundária ao fazer upgrade de pools de nós leva o mesmo tempo que fazer upgrade dos pools de nós para a próxima versão secundária. Portanto, um upgrade de versão de salto leva aproximadamente a metade do tempo de fazer upgrade de pools de nós duas vezes. Da mesma forma, com um upgrade de versão de salto, você tem apenas uma janela de validação, em comparação com duas com upgrades regulares.

  • Redução de interrupções: intervalos mais longos entre upgrades e menos tempo gasto fazendo upgrades e validações significam que suas cargas de trabalho são executadas por mais tempo com menos interrupções.

Como controlar as versões do plano de controle e do pool de nós durante um upgrade

No arquivo de configuração do cluster de usuário, o campo nodePools[i].gkeOnPremVersion permite que um pool de nós específico use uma versão diferente do campo gkeOnPremVersion de nível superior. Ao mudar o valor do campo nodePools[i].gkeOnPremVersion, você controla quando um pool de nós é atualizado ao executar gkectl upgrade cluster. Se você não incluir nodePools[i].gkeOnPremVersion no arquivo de configuração ou definir o campo como uma string vazia, os pools de nós serão atualizados para a mesma versão de destino especificada em gkeOnPremVersion.

Regras de versão

As regras para upgrades dependem da versão secundária do cluster.

  • Nas versões 1.30 e anteriores, a versão secundária do cluster de usuário precisa ser igual ou maior que a do cluster de administrador. A versão do patch não importa. Por exemplo, se um cluster de usuário estiver na versão 1.30.1, o cluster de administrador poderá ser atualizado para uma versão de patch mais recente, como 1.30.3.

  • Para as versões 1.31 e mais recentes, a versão do cluster de administrador, incluindo a versão do patch, precisa ser maior ou igual à do cluster de usuário. Por exemplo, se um cluster de administrador estiver na versão 1.31.1, a versão mais recente para a qual o cluster de usuário pode ser atualizado é 1.31.1.

Quando você quiser fazer upgrade dos clusters para a versão 1.31, primeiro é necessário levar todos os clusters para a versão 1.30. Depois que todos os clusters estiverem na versão 1.30, faça upgrade do cluster de administrador para a versão 1.31. Depois disso, você pode fazer upgrade dos clusters de usuário para a mesma versão do patch 1.31 do cluster de administrador.

Sequência de upgrade de versão ignorada

A sequência em que você faz upgrade dos clusters de administrador e de usuário depende da versão do cluster para a qual você está fazendo upgrade, chamada de versão de destino:

1.31

Use essa sequência especial se o cluster de usuários estiver na versão 1.29, o que significa que a versão de destino é 1.31. Quando um cluster de usuário está na versão 1.29, um cluster de administrador que gerencia o cluster de usuário pode estar na versão 1.27, 1.28 ou 1.29.

  1. Se o cluster de administrador estiver na versão 1.27, faça upgrade para a versão 1.28.
  2. Se o cluster de administrador estiver na versão 1.28, faça upgrade para a versão 1.29.
  3. Faça upgrade apenas do plano de controle do cluster de usuário da versão de origem, 1.29, para uma versão intermediária, 1.30. Deixe os pools de nós na versão de origem. A versão intermediária 1.30 é necessária porque o plano de controle precisa ser atualizado uma versão secundária de cada vez.
  4. Faça upgrade do cluster de administrador da versão 1.29 para a versão intermediária, 1.30.
  5. Faça upgrade do cluster de administrador para a versão de destino, 1.31.
  6. Faça upgrade do plano de controle do cluster de usuário e dos pools de nós para a versão de destino, 1.31.

1.30 e versões anteriores

Use esta sequência se a versão de destino for 1.30 ou anterior.

Suponha que o plano de controle do cluster de usuário e todos os pools de nós estejam na versão secundária 1.N. De modo geral, o upgrade do cluster de 1.N para 1.N+2 usando um upgrade de versão de salto funciona da seguinte maneira:

  1. Faça upgrade apenas do plano de controle da versão de origem, 1.N, para uma versão intermediária 1.N+1. Deixe os pools de nós na versão de origem. A versão intermediária é necessária porque o plano de controle precisa ser atualizado uma versão secundária de cada vez.
  2. Faça upgrade do plano de controle e dos pools de nós para a versão de destino 1.N+2.

Fazer upgrade de uma versão pulada

Esta seção mostra as etapas para fazer upgrade de uma versão.

Antes de começar

  1. Verifique se a versão atual (a versão de origem) do cluster está na versão 1.16 ou mais recente. Verifique a versão do plano de controle (gkeOnPremVersion) e de todos os pools de nós (nodePools[i].gkeOnPremVersion).

  2. Na versão 1.29 e mais recentes, as verificações de simulação do lado do servidor são ativadas por padrão. Revise suas regras de firewall para fazer as mudanças necessárias.

  3. Para fazer upgrade para a versão 1.28 ou mais recente, é necessário ativar o kubernetesmetadata.googleapis.com e conceder o papel do IAM kubernetesmetadata.publisher à conta de serviço de monitoramento de registros. Para mais detalhes, consulte Requisitos da API Google e do IAM.

Faça upgrade

1.31

Use essa sequência especial se o cluster de usuário estiver na versão 1.29, o que significa que a versão de destino é 1.31. Essa sequência é necessária porque as regras de versão foram alteradas na versão 1.31.

Quando um cluster de usuário está na versão 1.29, um cluster de administrador que gerencia o cluster de usuário pode estar na versão 1.27, 1.28 ou 1.29.

  1. Se o cluster de administrador estiver na versão 1.27, siga as etapas para fazer upgrade da estação de trabalho do administrador e fazer upgrade do cluster de administrador para a versão 1.28.

  2. Se o cluster de administrador estiver na versão 1.28, siga as etapas para fazer upgrade da estação de trabalho do administrador e do cluster de administrador para a versão 1.29.

  3. Para economizar espaço na estação de trabalho do administrador, remova os pacotes transferidos:

    rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz
    

Quando o cluster de administrador e todos os clusters de usuário estiverem na versão 1.29, será possível iniciar o upgrade de versão de salto.

  1. Defina a versão de origem (1.29), uma versão intermediária (1.30) e a versão de destino (1.31) nas variáveis de marcador de posição a seguir. Todas as versões precisam ser o número completo da versão no formato x.y.z-gke.N, como 1.29.700-gke.110.

    Versão
    Acesse a versão 1.29 do cluster de usuário atual. Esta é a versão de origem. SOURCE_VERSION
    Escolha uma versão intermediária 1.30. INTERMEDIATE_VERSION
    Escolha a versão de destino 1.31. Selecione o patch recomendado da versão secundária 1.31. TARGET_VERSION
  2. Faça upgrade da estação de trabalho do administrador para a versão intermediária 1.30, INTERMEDIATE_VERSION. Aguarde uma mensagem indicando que o upgrade foi concluído.

  3. Instale o pacote correspondente:

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  4. Faça upgrade da estação de trabalho do administrador novamente, mas desta vez para a versão de destino 1.31, TARGET_VERSION. Aguarde uma mensagem indicando que o upgrade foi concluído.

  5. Instale o pacote correspondente:

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  6. Faça upgrade apenas do plano de controle do cluster de usuário para a versão intermediária da seguinte maneira:

    1. Faça as seguintes alterações no arquivo de configuração do cluster de usuário:

      • Defina o campo gkeOnPremVersion como a versão intermediária, INTERMEDIATE_VERSION.

      • Defina todas as versões do pool de nós em nodePools[i].gkeOnPremVersion para a versão de origem, SOURCE_VERSION.

      Depois de atualizar o arquivo de configuração, ele vai ficar parecido com este:

      gkeOnPremVersion: INTERMEDIATE_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: SOURCE_VERSION
        ...
      - name: pool-2
        gkeOnPremVersion: SOURCE_VERSION
        ...
      
    2. Faça upgrade do plano de controle:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

      Substitua USER_CLUSTER_CONFIG pelo caminho do arquivo de configuração do cluster de usuário.

  7. Defina o campo bundlePath no arquivo de configuração do cluster de administrador como a versão intermediária 1.30 do pacote:

    bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz"
    
  8. Faça upgrade do cluster de administrador para a versão intermediária 1.30:

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE
    
  9. Defina o campo bundlePath no arquivo de configuração do cluster de administrador como a versão 1.31 do pacote:

    bundlePath="/var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz"

  10. Upgrade the admin cluster to the target 1.31 version:

    gkectl upgrade admin \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
        --config ADMIN_CLUSTER_CONFIG_FILE
    
  11. Faça upgrade do plano de controle e dos pools de nós para a versão de destino da seguinte maneira:

    1. Faça as seguintes alterações no arquivo de configuração do cluster de usuário:

      • Defina o campo gkeOnPremVersion como a versão de destino, TARGET_VERSION.

      • Defina todos os nodePools[i].gkeOnPremVersion como uma string vazia.

      Depois de atualizar o arquivo de configuração, ele vai ficar parecido com este:

      gkeOnPremVersion: TARGET_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: ""
        ...
      - name: pool-2
        gkeOnPremVersion: ""
        ...
      
    2. Faça upgrade do plano de controle e dos pools de nós:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

1.30 e versões anteriores

Use esta sequência se a versão de destino for 1.30 ou anterior.

  1. Defina a versão de origem (1.N), a versão intermediária (1.N+1) e a versão de destino (1.N+2) nas variáveis de marcador de posição a seguir. Todas as versões precisam ser o número completo da versão no formato x.y.z-gke.N, como 1.16.11-gke.25.

    Versão
    Receba a versão atual do cluster. Esta é a versão de origem (1.N). SOURCE_VERSION
    Escolha uma versão intermediária (1.N+1). INTERMEDIATE_VERSION
    Escolha a versão de destino (1.N+2). Selecione o patch recomendado da versão secundária de destino. TARGET_VERSION
  2. Faça upgrade da estação de trabalho do administrador para a versão intermediária, INTERMEDIATE_VERSION. Aguarde uma mensagem indicando que o upgrade foi concluído.

  3. Instale o pacote correspondente:

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-INTERMEDIATE_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    

    Substitua ADMIN_CLUSTER_KUBECONFIG pelo caminho do arquivo kubeconfig do cluster de administrador.

  4. Faça upgrade da estação de trabalho do administrador novamente, mas desta vez para a versão de destino, TARGET_VERSION. Aguarde uma mensagem indicando que o upgrade foi concluído.

  5. Instale o pacote correspondente:

    gkectl prepare \
        --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
        --kubeconfig ADMIN_CLUSTER_KUBECONFIG
    
  6. Faça upgrade apenas do plano de controle para a versão intermediária da seguinte maneira:

    1. Faça as seguintes alterações no arquivo de configuração do cluster de usuário:

      • Defina o campo gkeOnPremVersion como a versão intermediária, INTERMEDIATE_VERSION.

      • Defina todas as versões do pool de nós em nodePools[i].gkeOnPremVersion para a versão de origem, SOURCE_VERSION.

      Depois de atualizar o arquivo de configuração, ele vai ficar parecido com este:

      gkeOnPremVersion: INTERMEDIATE_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: SOURCE_VERSION
        ...
      - name: pool-2
        gkeOnPremVersion: SOURCE_VERSION
        ...
      
    2. Faça upgrade do plano de controle:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

      Substitua USER_CLUSTER_CONFIG pelo caminho do arquivo de configuração do cluster de usuário.

  7. Faça upgrade do plano de controle e dos pools de nós para a versão de destino da seguinte maneira:

    1. Faça as seguintes alterações no arquivo de configuração do cluster de usuário:

      • Defina o campo gkeOnPremVersion como a versão de destino, TARGET_VERSION.

      • Defina todos os nodePools[i].gkeOnPremVersion como uma string vazia.

      Depois de atualizar o arquivo de configuração, ele vai ficar parecido com este:

      gkeOnPremVersion: TARGET_VERSION
      ...
      nodePools:
      - name: pool-1
        gkeOnPremVersion: ""
        ...
      - name: pool-2
        gkeOnPremVersion: ""
        ...
      
    2. Faça upgrade do plano de controle e dos pools de nós:

      gkectl upgrade cluster \
          --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
          --config USER_CLUSTER_CONFIG_FILE
      

Se você não tiver outros clusters de usuários para fazer upgrade, remova os pacotes da estação de trabalho do administrador para economizar espaço:

rm /var/lib/gke/bundles/gke-onprem-vsphere-*.tgz

A seguir