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 tarefas de exemplo mencionados no Google Cloud conteúdo, consulte Tarefas e papéis de usuário comuns do GKE. Antes de ler este documento, você precisa conhecer o planejamento e a execução de upgrades do Google Distributed Cloud, conforme descrito abaixo:
Limitações
O upgrade de pools de nós separadamente do plano de controle tem as seguintes limitações:
Esse recurso é compatível com pools de nós do Ubuntu e do COS, mas não com pools de nós do Windows.
Esse recurso não está disponível ao fazer upgrade de clusters não avançados para clusters avançados. Os clusters não avançados serão atualizados para clusters avançados na versão 1.33 automaticamente.
Versão 1.31: esse recurso não está disponível em clusters avançados.
Versão 1.32 e mais recentes: esse recurso 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 pools de nós em duas versões. Além disso, os upgrades de versão de salto permitem aumentar o tempo entre os upgrades necessários para permanecer em uma versão compatível. Reduzir o número de upgrades diminui as interrupções da 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, é possível fazer upgrade do plano de controle e de um pool de nós com tráfego leve ou que executa cargas de trabalho menos importantes. Depois que você estiver convencido 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 grande janela de manutenção para o upgrade do cluster, é possível fazer upgrade do cluster em várias janelas de manutenção. Consulte Estimar o compromisso de tempo e planejar uma janela de manutenção para informações sobre como estimar o tempo de uma janela de manutenção.
Antes de começar
Na versão 1.29 e em versões mais recentes, as verificações de simulação do lado do servidor são ativadas por padrão. Revise as regras de firewall para fazer as mudanças necessárias.
Para fazer upgrade para a versão 1.28 e mais recentes, é necessário ativar
kubernetesmetadata.googleapis.come conceder o papel do IAMkubernetesmetadata.publisherà conta de serviço de geração de registros e monitoramento. Para mais detalhes, consulte Requisitos da API do Google e do IAM.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 gkectl, a Google Cloud CLI e o Terraform.
O Terraform só pode ser usado para o upgrade se você tiver criado o cluster do usuário usando o Terraform.
gkectl
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 de versão completo no formato
x.y.z-gke.N, como1.16.11-gke.25.Versão Descrição SOURCE_VERSIONA versão atual do cluster. TARGET_VERSIONEscolha a versão de destino. Selecione o patch recomendado na versão secundária de destino. 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.
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_KUBECONFIGpelo caminho do arquivokubeconfigdo cluster de administrador.Faça as seguintes mudanças no arquivo de configuração do cluster de usuário:
Defina o campo
gkeOnPremVersioncomo a versão de destino,TARGET_VERSION.Para cada pool de nós que você quer atualizar, defina o campo
nodePools.nodePool[i].gkeOnPremVersioncomo a string vazia.- Na versão 1.28 e mais recentes, é possível acelerar o upgrade do pool de nós
definindo o
nodePools.nodePool[i].updateStrategy.rollingUpdate.maxSurgecampo como um valor inteiro maior que 1. Ao fazer upgrade de nós commaxSurge, vários nós são atualizados no mesmo tempo necessário para fazer upgrade de um único nó.
- Na versão 1.28 e mais recentes, é possível acelerar o upgrade do pool de nós
definindo o
Para cada pool de nós que você não quer atualizar, defina
nodePools.nodePool[i].gkeOnPremVersioncomo a versão de origem,SOURCE_VERSION.
O exemplo a seguir mostra uma parte do arquivo de configuração do cluster de usuário. Ele especifica que o plano de controle e
pool-1serão atualizados paraTARGET_VERSION, maspool-2permanecerá emSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...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_CONFIGpelo 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 agora você queira fazer upgrade de pool-2.
No arquivo de configuração do cluster de usuário, em
pool-2, definagkeOnPremVersioncomo a string vazia:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...Execute
gkectl update clusterpara aplicar a mudança:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
CLI 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.
Atualize os componentes da Google Cloud CLI:
gcloud components updateMude 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 usandogkectl, esse é o ID do projeto no campogkeConnect.projectIDno arquivo de configuração do cluster.REGION: aregião em que a API GKE On-Prem é executada e armazena os metadados. Google Cloud 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 usandogkectl, essa é a região especificada ao registrar o cluster na API GKE On-Prem.
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_VERSIONpela versão para fazer upgrade. Selecione o patch recomendado na 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
Upgrade dos pools de nós
Siga as etapas abaixo para fazer upgrade dos pools de nós depois que o plano de controle do cluster de usuário tiver sido atualizado:
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
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
Atualize os componentes da CLI do Google Cloud:
gcloud components updateRegistre 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.
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 usandogkectl, esse é o ID do projeto no campogkeConnect.projectIDno arquivo de configuração do cluster.REGION: aregião em que a API GKE On-Prem é executada e armazena os metadados. Google Cloud 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 usandogkectl, essa é a região especificada ao registrar o cluster na API GKE On-Prem.TARGET_VERSION: a versão para 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-versionno 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.No arquivo
main.tfusado para criar o cluster de usuário, mudeon_prem_versionno recurso do cluster para a nova versão.Adicione o seguinte ao recurso do cluster para que apenas o plano de controle seja atualizado:
upgrade_policy { control_plane_only = true }Inicialize e crie o plano do Terraform:
terraform initO Terraform instala todas as bibliotecas necessárias, como o Google Cloud provedor.
Revise a configuração e faça mudanças, se necessário:
terraform planAplique o plano do Terraform para criar o cluster de usuário:
terraform apply
Upgrade dos pools de nós
Siga as etapas abaixo para fazer upgrade dos pools de nós depois que o plano de controle do cluster de usuário tiver sido atualizado:
Em
main.tfno 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" }Inicialize e crie o plano do Terraform:
terraform initRevise a configuração e faça alterações, se necessário:
terraform planAplique 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.