Upgrade dos pools de nós

Esta página mostra como fazer upgrade do plano de controle e dos pools de nós separadamente em um cluster de usuário criado com o Google Distributed Cloud (somente software) no VMware. 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 mencionados no conteúdo do Google Cloud , consulte Tarefas e funções de usuário comuns do GKE Enterprise. Antes de ler este documento, confira se você sabe planejar e executar upgrades do Google Distributed Cloud, conforme descrito nos seguintes documentos:

O upgrade de pools de nós separadamente do plano de controle é compatível com pools de nós do Ubuntu e do COS, mas não com os do Windows. Além disso, esse recurso não está disponível em clusters avançados.

Por que fazer upgrade do plano de controle e dos pools de nós separadamente?

  • Se os clusters estiverem na versão 1.16 ou mais recente, será possível pular uma versão secundária ao fazer upgrade de pools de nós. A execução de um upgrade de versão de salto reduz pela metade o tempo necessário para fazer upgrade sequencial de duas versões dos pools de nós. Além disso, os upgrades de versão pulada permitem aumentar o tempo entre os upgrades necessários para permanecer em uma versão com suporte. Reduzir o número de upgrades diminui as interrupções na carga de trabalho e o tempo de verificação. Para mais informações, consulte Pular uma versão ao fazer upgrade de pools de nós.

  • Em determinadas situações, pode ser necessário fazer upgrade de alguns, mas não de todos os pools de nós em um cluster de usuário, por exemplo:

    • Primeiro, faça upgrade do plano de controle e de um pool de nós com tráfego leve ou que execute as cargas de trabalho menos importantes. Depois de ter certeza de que as cargas de trabalho são executadas corretamente na nova versão, será possível fazer upgrade de outros pools de nós até que todos eles sejam atualizados.

    • Em vez de uma janela de manutenção grande para o upgrade do cluster, é possível fazer o upgrade do cluster em várias janelas de manutenção. Consulte Estime o compromisso de tempo e planeje uma janela de manutenção para saber como estimar o tempo de uma janela de manutenção.

Antes de começar

  1. 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.

  2. 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.

  3. Verifique se a versão atual do cluster é 1.14 ou mais recente.

Fazer upgrade do plano de controle e dos pools de nós selecionados

O upgrade do plano de controle de um cluster de usuário separadamente dos pools de nós de trabalho é compatível com o uso de gkectl, a Google Cloud CLI e o Terraform. O Terraform só pode ser usado para o upgrade se você tiver criado o cluster de usuário usando o Terraform.

gkectl

  1. Defina a versão de origem e a versão de destino nas seguintes variáveis de marcador de posição. 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 Descrição
    SOURCE_VERSION A versão atual do cluster.
    TARGET_VERSION Escolha a versão de destino. Selecione o patch recomendado na versão secundária de destino.
  2. Faça upgrade da estação de trabalho do administrador para a versão de destino. Aguarde uma mensagem indicando que o upgrade foi concluído.

  3. Importe as imagens do SO correspondentes para o vSphere:

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

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

  4. 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.

    • Para cada pool de nós que você quer atualizar, defina o campo nodePools.nodePool[i].gkeOnPremVersion como a string vazia.

    • Para cada pool de nós que você não quer atualizar, defina nodePools.nodePool[i].gkeOnPremVersion como a versão de origem, SOURCE_VERSION.

    O exemplo a seguir mostra uma parte do arquivo de configuração do cluster de usuário. Ela especifica que o plano de controle e o pool-1 serão atualizados para TARGET_VERSION, mas o pool-2 permanecerá em SOURCE_VERSION.

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

    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.

Fazer upgrade de outros pools de nós

Usando o exemplo anterior, suponha que tudo esteja funcionando bem com pool-1 e que você queira fazer upgrade de pool-2.

  1. No arquivo de configuração do cluster de usuário, em pool-2, defina gkeOnPremVersion como a string vazia:

    gkeOnPremVersion: TARGET_VERSION
    ...
    nodePools:
    - name: pool-1
      gkeOnPremVersion: ""
      ...
    - name: pool-2
      gkeOnPremVersion: ""
      ...
    
  2. Execute gkectl update cluster para aplicar a alteração:

    gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
      --config USER_CLUSTER_CONFIG
    

CLI da gcloud

O upgrade de um cluster de usuário exige algumas alterações no cluster de administrador. O comando gcloud container vmware clusters upgrade faz o seguinte automaticamente:

  • Registra o cluster de administrador na API GKE On-Prem, se ele ainda não estiver registrado.

  • Faz o download e implanta um pacote de componentes no cluster de administrador. A versão dos componentes corresponde à versão especificada para o upgrade. Esses componentes permitem que o cluster de administrador gerencie clusters de usuário nessa versão.

Fazer upgrade do plano de controle

Siga a etapa abaixo para fazer upgrade do plano de controle do cluster de usuário.

  1. Atualize os componentes da CLI do Google Cloud:

    gcloud components update
    
  2. Mude a política de upgrade no cluster:

    gcloud container vmware clusters update USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --upgrade-policy control-plane-only=True
    

    Substitua:

    • USER_CLUSTER_NAME: o nome do cluster de usuário que será atualizado.

    • PROJECT_ID: o ID do projeto do host da frota que o cluster de usuário é membro. Esse é o projeto especificado quando o cluster foi criado. Se você criou o cluster usando gkectl, esse é o ID do projeto no campo gkeConnect.projectID no arquivo de configuração do cluster.

    • REGION: a região do em que a API GKE On-Prem é executada e armazena os metadados. Se você criou o cluster usando um cliente da API GKE On-Prem, essa é a região selecionada ao criar o cluster. Se você criou o cluster usando gkectl, essa é a região especificada ao registrar o cluster na API GKE On-Prem.

  3. Faça upgrade do plano de controle do cluster:

    gcloud container vmware clusters upgrade USER_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

    Substitua TARGET_VERSION pela versão para a qual você quer fazer upgrade. Selecione o patch recomendado da versão secundária de destino.

    A saída deste comando terá esta aparência:

    Waiting for operation [projects/example-project-12345/locations/us-west1/operations/operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179] to complete.
    

    No exemplo de saída, a string operation-1679543737105-5f7893fd5bae9-942b3f97-75e59179 é o OPERATION_ID da operação de longa duração. Descubra o status da operação executando o comando a seguir em outra janela de terminal:

    gcloud container vmware operations describe OPERATION_ID \
      --project=PROJECT_ID \
      --location=REGION
    

Fazer upgrade dos pools de nós

Siga estas etapas para fazer upgrade dos pools de nós depois que o plano de controle do cluster de usuário tiver sido atualizado:

  1. Confira uma lista de pools de nós no cluster de usuário:

    gcloud container vmware node-pools list
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION
    
  2. Para cada pool de nós que você quer fazer upgrade, execute o seguinte comando:

    gcloud container vmware node-pools update NODE_POOL_NAME \
      --cluster=USER_CLUSTER_NAME  \
      --project=PROJECT_ID \
      --location=REGION \
      --version=TARGET_VERSION
    

Terraform

  1. Atualize os componentes da CLI do Google Cloud:

    gcloud components update
    
  2. Registre o cluster de administrador na API GKE On-Prem, caso ainda não tenha feito isso. Depois que o cluster tiver sido registrado na API GKE On-Prem, não será necessário fazer essa etapa novamente.

  3. Faça o download da nova versão dos componentes e implante-os no cluster de administrador:

    gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \
      --project=PROJECT_ID \
      --location=REGION \
      --required-platform-version=TARGET_VERSION
    

    Substitua:

    • USER_CLUSTER_NAME: o nome do cluster de usuário que será atualizado.

    • PROJECT_ID: o ID do projeto do host da frota que o cluster de usuário é membro. Esse é o projeto especificado quando o cluster foi criado. Se você criou o cluster usando gkectl, esse é o ID do projeto no campo gkeConnect.projectID no arquivo de configuração do cluster.

    • REGION: a região do em que a API GKE On-Prem é executada e armazena os metadados. Se você criou o cluster usando um cliente da API GKE On-Prem, essa é a região selecionada ao criar o cluster. Se você criou o cluster usando gkectl, essa é a região especificada ao registrar o cluster na API GKE On-Prem.

    • TARGET_VERSION: a versão para a qual você quer fazer upgrade. Selecione o patch recomendado na versão secundária de destino.

    Esse comando faz o download da versão dos componentes especificados em --required-platform-version no cluster de administrador e, em seguida, implanta os componentes. Esses componentes permitem que o cluster de administrador gerencie clusters de usuário nessa versão.

  4. No arquivo main.tf usado para criar o cluster de usuário, mude on_prem_version no recurso do cluster para a nova versão.

  5. Adicione o seguinte ao recurso do cluster para que apenas o plano de controle seja atualizado:

    upgrade_policy {
      control_plane_only = true
    }
    
  6. Inicialize e crie o plano do Terraform:

    terraform init
    

    O Terraform instala todas as bibliotecas necessárias, como o provedor Google Cloud.

  7. Revise a configuração e faça alterações, se necessário:

    terraform plan
    
  8. Aplique o plano do Terraform para criar o cluster de usuário:

    terraform apply
    

Fazer upgrade dos pools de nós

Siga estas etapas para fazer upgrade dos pools de nós depois que o plano de controle do cluster de usuário tiver sido atualizado:

  1. Em main.tf no recurso de cada pool de nós que você quer atualizar, adicione o seguinte:

    on_prem_version = "TARGET_VERSION"
    

    Por exemplo:

    resource "google_gkeonprem_vmware_node_pool" "nodepool-basic" {
    name = "my-nodepool"
    location = "us-west1"
    vmware_cluster = google_gkeonprem_vmware_cluster.default-basic.name
    config {
      replicas = 3
      image_type = "ubuntu_containerd"
      enable_load_balancer = true
    }
    on_prem_version = "1.16.0-gke.0"
    }
    
  2. Inicialize e crie o plano do Terraform:

    terraform init
    
  3. Revise a configuração e faça alterações, se necessário:

    terraform plan
    
  4. Aplique o plano do Terraform para criar o cluster de usuário:

    terraform apply
    

Solução de problemas

Se você encontrar um problema depois de fazer upgrade de um pool de nós, poderá reverter para a versão anterior. Para mais informações, consulte Reverter um pool de nós após um upgrade.