Atualize um cluster

Este documento explica como atualizar a versão do Kubernetes de um cluster do Kubernetes isolado do ar do Google Distributed Cloud (GDC). Tem de planear atualizações de rotina para os seus clusters para garantir que incorporam as funcionalidades e as correções mais recentes do Kubernetes.

Este documento destina-se a públicos como administradores de TI, engenheiros de segurança e administradores de rede no grupo de administradores da plataforma, que são responsáveis pela gestão de recursos do Kubernetes na respetiva organização. Para mais informações, consulte a documentação sobre públicos-alvo para GDC com isolamento de ar.

Antes de começar

  • Transfira e instale a CLI gcloud.

  • Instale a CLI kubectl. Para mais informações, consulte o artigo Instale componentes.

  • Gere um ficheiro kubeconfig para o servidor da API de gestão na zona segmentada. Para mais informações, consulte o artigo Recursos do cluster Kubernetes zonal.

  • Para receber as autorizações necessárias para listar as versões de atualização disponíveis, peça ao administrador do IAM da sua organização para lhe conceder a função de administrador do cluster de utilizadores (user-cluster-admin).

    Se gerir um cluster padrão e não conseguir obter a função de administrador do cluster de utilizadores do seu grupo de administradores da plataforma, tem de pedir que lhe forneçam a lista de versões de atualização do Kubernetes disponíveis.

  • Para receber as autorizações necessárias para configurar uma atualização do cluster, peça ao administrador de IAM da organização para lhe conceder a função de administrador do cluster padrão (standard-cluster-admin).

Atualize um cluster do Kubernetes

Use a API UserClusterUpgradeRequest para atualizar um cluster do Kubernetes existente.

Para atualizar um cluster do Kubernetes através da API, siga estes passos:

  1. Liste as versões de atualização do Kubernetes disponíveis imprimindo o valor kubernetesVersion dos objetos UserClusterMetadata:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get userclustermetadata -o=custom-columns='TARGET_VERSION:.spec.kubernetesVersion'
    

    Substitua MANAGEMENT_API_SERVER pelo caminho para o ficheiro kubeconfig do servidor da API de gestão.

    O comando devolve uma lista de versões do Kubernetes disponíveis:

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Tome nota da versão do Kubernetes da saída anterior para a qual quer atualizar o cluster. A targetVersion que especificar no pedido de atualização no passo seguinte tem de ser uma destas versões disponíveis.

  3. Peça a atualização do cluster criando um UserClusterUpgradeRequest recurso:

      kubectl --kubeconfig MANAGEMENT_API_SERVER apply -f - <<EOF
      apiVersion: cluster.gdc.goog/v1
      kind: UserClusterUpgradeRequest
      metadata:
        name: CLUSTER_NAME
        namespace: CLUSTER_NAMESPACE
      spec:
        clusterRef:
          name: CLUSTER_NAME
        targetVersion: TARGET_VERSION
      EOF
    

    Substitua o seguinte:

    • MANAGEMENT_API_SERVER: o caminho para o ficheiro kubeconfig do servidor da API de gestão.
    • CLUSTER_NAME: o nome do cluster do Kubernetes a atualizar, como user-vm-2.
    • CLUSTER_NAMESPACE: o espaço de nomes do cluster do Kubernetes. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto do cluster.
    • TARGET_VERSION: a versão de destino da atualização identificada no passo anterior, como 1.30.1000-gke.85.

    O tempo médio de atualização de um cluster do Kubernetes demora aproximadamente 20 minutos.

  4. Valide a atualização do cluster monitorizando o UserClusterUpgradeRequest recurso:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        describe userclusterupgraderequest CLUSTER_NAME \
        -n CLUSTER_NAMESPACE
    

    Substitua o seguinte:

    • MANAGEMENT_API_SERVER: o caminho para o ficheiro kubeconfig do servidor da API de gestão.
    • CLUSTER_NAME: o nome do cluster do Kubernetes a atualizar, como user-vm-2.
    • CLUSTER_NAMESPACE: o espaço de nomes do cluster do Kubernetes. Para clusters partilhados, use o espaço de nomes platform. Para clusters padrão, use o espaço de nomes do projeto do cluster.

    Inspecione a secção Spec do resultado. Contém Current Version e Target Version. A atualização ainda está em curso se o Current Version e o Target Version forem diferentes.

    Spec:
      ...
      Current Version: 1.29.500-gke.60
      Target Version: 1.30.1000-gke.85
    Status:
      Conditions:
      - Message: Upgrade is in progress
        Reason: UpgradeInProgress
        Status: "False"
        Type: Succeeded
    

    A atualização está concluída e é bem-sucedida quando a condição Succeeded tem o estado True e o valor Current Version corresponde ao valor Target Version.

    Se a condição Succeeded tiver o estado False, a atualização falhou. Se encontrar erros relacionados com a atualização do cluster do Kubernetes, contacte o grupo do operador de infraestrutura para receber assistência adicional.

Valide os subcomponentes do cluster após a atualização

Depois de atualizar com êxito o cluster do Kubernetes, recomendamos que confirme se todos os subcomponentes do cluster estão em bom estado.

Verifique se existem falhas de subcomponentes no cluster:

  1. Verifique se existem subcomponentes que apresentem uma ReconciliationError mensagem:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get subcomponent -n CLUSTER_NAME -o json | jq -r \
        '.items[] |  select(.status.conditions[]?.reason == "ReconciliationError") |
        select(.status.featureDisabled != true) |  "Sub-Component: \(.metadata.name)
        - \(.status.conditions[]?.message)"'
    

    Se o resultado devolver quaisquer subcomponentes, contacte o seu grupo de operadores de infraestrutura para receber mais assistência.

  2. Verifique se não existem subcomponentes que apresentem a mensagem Reconciling:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get subcomponent -n CLUSTER_NAME -o json | jq -r \
        '.items[] |  select(.status.conditions[]?.reason == "Reconciling") |
        select(.status.featureDisabled != true) | select( "\(.status)" |
        contains("PreinstallPending") | not) | "Sub-Component: \(.metadata.name)
        - \(.status.conditions[]?.message)"'
    

    Para clusters do Kubernetes com três nós do plano de controlo e três nós de trabalho, o tempo de atualização demora aproximadamente 20 minutos. Se continuar a ver subcomponentes no estado Reconciling após 20 minutos, contacte o seu grupo de operadores de infraestrutura para receber assistência adicional.

O que se segue?