Esta página mostra como atualizar o painel de controlo e os conjuntos de nós separadamente num cluster de utilizador criado com o Google Distributed Cloud (apenas software) no VMware. Esta página destina-se a administradores de TI e operadores que gerem o ciclo de vida da infraestrutura tecnológica subjacente. Para saber mais sobre as funções comuns e exemplos de tarefas que referimos no Google Cloud conteúdo, consulte Funções e tarefas comuns de utilizadores do GKE. Antes de ler este documento, certifique-se de que está familiarizado com o planeamento e a execução de atualizações do Google Distributed Cloud, conforme descrito no seguinte:
Limitações
A atualização dos node pools separadamente do plano de controlo tem as seguintes limitações:
Esta funcionalidade é suportada para pools de nós do Ubuntu e do COS, mas não para pools de nós do Windows.
Esta funcionalidade não está disponível quando atualiza clusters não avançados para clusters avançados. Os clusters não avançados vão ser atualizados automaticamente para clusters avançados na versão 1.33.
Versão 1.31: esta funcionalidade não está disponível em clusters avançados.
Versão 1.32 e superior: esta funcionalidade está disponível em clusters avançados.
Por que motivo deve atualizar o plano de controlo e os node pools separadamente?
Se os seus clusters estiverem na versão 1.16 ou superior, pode ignorar uma versão secundária ao atualizar os conjuntos de nós. A execução de uma atualização de versão ignorada reduz para metade o tempo necessário para atualizar sequencialmente os node pools duas versões. Além disso, as atualizações de versões ignoradas permitem-lhe aumentar o tempo entre as atualizações necessárias para permanecer numa versão suportada. Reduzir o número de atualizações reduz as interrupções da carga de trabalho e o tempo de validação. Para mais informações, consulte o artigo Ignore uma versão ao atualizar conjuntos de nós.
Em determinadas situações, pode querer atualizar alguns, mas não todos os node pools num cluster de utilizador, por exemplo:
Pode começar por atualizar o plano de controlo e um conjunto de nós com tráfego reduzido ou que execute as cargas de trabalho menos críticas. Depois de se certificar de que as cargas de trabalho são executadas corretamente na nova versão, pode atualizar pools de nós adicionais até que todos os pools de nós sejam atualizados.
Em vez de um grande período de manutenção para a atualização do cluster, pode atualizar o cluster em vários períodos de manutenção. Consulte o artigo Estime o tempo necessário e planeie um período de manutenção para obter informações sobre como estimar o tempo de um período de manutenção.
Antes de começar
Na versão 1.29 e posteriores, as verificações prévias do lado do servidor estão ativadas por predefinição. Certifique-se de que reveja as regras da firewall para fazer as alterações necessárias.
Para atualizar para a versão 1.28 e posteriores, tem de ativar o
kubernetesmetadata.googleapis.come conceder a função de IAMkubernetesmetadata.publisherà conta de serviço de registo e monitorização. Para ver detalhes, consulte os requisitos da API Google e da IAM.Certifique-se de que a versão atual do cluster é a 1.14 ou superior.
Atualize o plano de controlo e os node pools selecionados
A atualização do painel de controlo de um cluster de utilizadores separadamente dos conjuntos de nós de trabalho é suportada através do gkectl, da Google Cloud CLI e do Terraform.
Só pode usar o Terraform para a atualização se tiver criado o cluster de utilizadores
com o Terraform.
gkectl
Defina a versão de origem e a versão de destino nas seguintes variáveis de marcadores de posição. Todas as versões têm de ser o número da 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 da versão secundária de destino. Atualize a estação de trabalho do administrador para a versão de destino. Aguarde uma mensagem a indicar que a atualização foi bem-sucedida.
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 ficheirokubeconfigdo cluster de administrador.Faça as seguintes alterações no ficheiro de configuração do cluster de utilizadores:
Defina o campo
gkeOnPremVersionpara a versão de destino,TARGET_VERSION.Para cada conjunto de nós que quer atualizar, defina o campo
nodePools.nodePool[i].gkeOnPremVersioncomo a string vazia.Para cada conjunto de nós que não quer atualizar, defina
nodePools.nodePool[i].gkeOnPremVersionpara a versão de origem,SOURCE_VERSION.
O exemplo seguinte mostra uma parte do ficheiro de configuração do cluster de utilizadores. Especifica que o plano de controlo e o
pool-1vão ser atualizados paraTARGET_VERSION, mas opool-2vai permanecer emSOURCE_VERSION.gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: SOURCE_VERSION ...Atualize o painel de controlo e os node pools selecionados:
gkectl upgrade cluster \ --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG_FILE
Substitua
USER_CLUSTER_CONFIGpelo caminho do ficheiro de configuração do cluster de utilizadores.
Atualize node pools adicionais
Usando o exemplo anterior, suponhamos que tudo está a funcionar bem com pool-1 e que agora quer atualizar pool-2.
No ficheiro de configuração do cluster de utilizadores, 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 alteração:gkectl update cluster --kubeconfig ADMIN_CLUSTER_KUBECONFIG \ --config USER_CLUSTER_CONFIG
CLI gcloud
A atualização de um cluster de utilizadores requer algumas alterações ao cluster de administrador. O comando
gcloud container vmware clusters upgrade faz automaticamente o seguinte:
Inscreve o cluster de administrador na API GKE On-Prem se ainda não estiver inscrito.
Transfere e implementa um pacote de componentes no cluster de administrador. A versão dos componentes corresponde à versão especificada para a atualização. Estes componentes permitem que o cluster de administrador faça a gestão dos clusters de utilizadores nessa versão.
Atualize o plano de controlo
Siga o passo seguinte para atualizar o plano de controlo do cluster de utilizadores.
Atualize os componentes da CLI do Google Cloud:
gcloud components updateAltere a política de atualização no cluster:
gcloud container vmware clusters update USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --upgrade-policy control-plane-only=True
Substitua o seguinte:
USER_CLUSTER_NAME: o nome do cluster de utilizadores a atualizar.PROJECT_ID: o ID do projeto anfitrião da frota no qual o cluster de utilizadores é membro. Este é o projeto que especificou quando o cluster foi criado. Se criou o cluster usandogkectl, este é o ID do projeto no campogkeConnect.projectIDdo ficheiro de configuração do cluster.REGION: A Google Cloud região na qual a API GKE On-Prem é executada e armazena os respetivos metadados. Se criou o cluster com um cliente da API GKE On-Prem, esta é a região que selecionou quando criou o cluster. Se criou o cluster através dogkectl, esta é a região que especificou quando inscreveu o cluster na API GKE On-Prem.
Atualize o painel de controlo do cluster:
gcloud container vmware clusters upgrade USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --version=TARGET_VERSION
Substitua
TARGET_VERSIONpela versão para a qual quer atualizar. Selecione o patch recomendado da versão secundária de destino.O resultado do comando é semelhante ao seguinte:
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. Pode saber o estado da operação executando o seguinte comando noutra janela do terminal:gcloud container vmware operations describe OPERATION_ID \ --project=PROJECT_ID \ --location=REGION
Atualize node pools
Siga estes passos para atualizar os conjuntos de nós depois de o plano de controlo do cluster de utilizadores ter sido atualizado:
Obtenha uma lista de node pools no cluster de utilizador:
gcloud container vmware node-pools list --cluster=USER_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION
Para cada conjunto de nós que quer atualizar, 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 updateSe ainda não o fez, inscreva o cluster de administrador na API GKE On-Prem. Depois de o cluster estar inscrito na API GKE On-Prem, não precisa de fazer este passo novamente.
Transfira a nova versão dos componentes e implemente-os no cluster de administração:
gcloud vmware admin-clusters update ADMIN_CLUSTER_NAME \ --project=PROJECT_ID \ --location=REGION \ --required-platform-version=TARGET_VERSION
Substitua o seguinte:
USER_CLUSTER_NAME: o nome do cluster de utilizadores a atualizar.PROJECT_ID: o ID do projeto anfitrião da frota no qual o cluster de utilizadores é membro. Este é o projeto que especificou quando o cluster foi criado. Se criou o cluster usandogkectl, este é o ID do projeto no campogkeConnect.projectIDdo ficheiro de configuração do cluster.REGION: A Google Cloud região na qual a API GKE On-Prem é executada e armazena os respetivos metadados. Se criou o cluster com um cliente da API GKE On-Prem, esta é a região que selecionou quando criou o cluster. Se criou o cluster através dogkectl, esta é a região que especificou quando inscreveu o cluster na API GKE On-Prem.TARGET_VERSION: a versão para a qual atualizar. Selecione o patch recomendado da versão secundária de destino.
Este comando transfere a versão dos componentes que especificar em
--required-platform-versionpara o cluster de administrador e, em seguida, implementa os componentes. Estes componentes permitem que o cluster de administrador faça a gestão dos clusters de utilizadores nessa versão.No ficheiro
main.tfque usou para criar o cluster de utilizadores, altereon_prem_versionno recurso de cluster para a nova versão.Adicione o seguinte ao recurso do cluster para que apenas o plano de controlo 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 fornecedor.
Reveja a configuração e faça alterações, se necessário:
terraform planAplique o plano do Terraform para criar o cluster de utilizadores:
terraform apply
Atualize node pools
Siga estes passos para atualizar os conjuntos de nós depois de o plano de controlo do cluster de utilizador ter sido atualizado:
Em
main.tfno recurso para cada conjunto de nós que 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 initReveja a configuração e faça alterações, se necessário:
terraform planAplique o plano do Terraform para criar o cluster de utilizadores:
terraform apply
Resolução de problemas
Se tiver um problema após atualizar um conjunto de nós, pode reverter para a versão anterior. Para mais informações, consulte o artigo Reverta um conjunto de nós após uma atualização.