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.com
e 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_VERSION
A versão atual do cluster. TARGET_VERSION
Escolha 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_KUBECONFIG
pelo caminho do ficheirokubeconfig
do cluster de administrador.Faça as seguintes alterações no ficheiro de configuração do cluster de utilizadores:
Defina o campo
gkeOnPremVersion
para a versão de destino,TARGET_VERSION
.Para cada conjunto de nós que quer atualizar, defina o campo
nodePools.nodePool[i].gkeOnPremVersion
como a string vazia.Para cada conjunto de nós que não quer atualizar, defina
nodePools.nodePool[i].gkeOnPremVersion
para 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-1
vão ser atualizados paraTARGET_VERSION
, mas opool-2
vai 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_CONFIG
pelo 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
, definagkeOnPremVersion
como a string vazia:gkeOnPremVersion: TARGET_VERSION ... nodePools: - name: pool-1 gkeOnPremVersion: "" ... - name: pool-2 gkeOnPremVersion: "" ...
Execute
gkectl update cluster
para 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 update
Altere 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.projectID
do 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_VERSION
pela 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 update
Se 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.projectID
do 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-version
para 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.tf
que usou para criar o cluster de utilizadores, altereon_prem_version
no 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 init
O 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 plan
Aplique 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.tf
no 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 init
Reveja a configuração e faça alterações, se necessário:
terraform plan
Aplique 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.