Fazer upgrade de um cluster

Neste documento, explicamos como fazer upgrade da versão do Kubernetes de um cluster do Kubernetes do Google Distributed Cloud (GDC) com isolamento físico. É preciso planejar upgrades de rotina para os clusters para garantir que eles incorporem os recursos e as correções mais recentes do Kubernetes.

Este documento é destinado a administradores de TI, engenheiros de segurança e administradores de rede do grupo de administradores de plataforma, que são responsáveis por gerenciar recursos do Kubernetes na organização. Para mais informações, consulte Públicos-alvo da documentação do GDC com isolamento físico.

Antes de começar

Para concluir as tarefas neste documento, solicite as permissões necessárias e prepare seu ambiente.

Solicitar papéis do IAM

Você precisa ter papéis específicos para receber as permissões necessárias para fazer upgrade do cluster do Kubernetes. É preciso solicitar papéis com escopo para seu projeto e organização.

papéis na organização

Para listar as versões de upgrade disponíveis para um cluster do Kubernetes, peça ao administrador da organização do IAM para conceder a você o papel de administrador do cluster de usuário (user-cluster-admin). Esse papel não está vinculado a um namespace.

Se você gerencia um cluster padrão e não consegue receber o papel de administrador do cluster de usuário do grupo de administradores da plataforma, peça que eles forneçam a lista de versões de upgrade do Kubernetes disponíveis.

Papéis do projeto

Para criar, excluir, editar ou visualizar upgrades de cluster, peça ao administrador do projeto do IAM para conceder a você o papel de administrador de cluster padrão (standard-cluster-admin). Esse papel está vinculado ao namespace do projeto.

Preparar o ambiente

Para executar comandos em um cluster do Kubernetes usando a API, verifique se você tem os seguintes recursos:

  • Faça o download e instale a CLI gdcloud.

  • Instale a CLI kubectl.

  • Localize o nome do cluster do Kubernetes ou pergunte a um membro do grupo de administradores da plataforma qual é o nome do cluster.

  • Use o nome do cluster do Kubernetes para substituir CLUSTER_NAME nestas instruções.

  • Faça login e gere o arquivo kubeconfig para o servidor de API de gerenciamento.

  • Use o caminho kubeconfig do servidor de API de gerenciamento para substituir MANAGEMENT_API_SERVER nestas instruções.

Fazer upgrade de um cluster do Kubernetes

Use a API UserClusterUpgradeRequest para fazer upgrade de um cluster do Kubernetes.

Para fazer upgrade de um cluster do Kubernetes usando a API, siga estas etapas:

  1. Liste as versões de upgrade disponíveis do Kubernetes 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 arquivo kubeconfig do servidor de API de gerenciamento.

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

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Anote a versão do Kubernetes da saída anterior para a qual você quer fazer upgrade do cluster. O targetVersion especificado na solicitação de upgrade na próxima etapa precisa ser uma dessas versões disponíveis.

  3. Solicite o upgrade do cluster criando um recurso UserClusterUpgradeRequest:

      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:

    • MANAGEMENT_API_SERVER: o caminho para o arquivo kubeconfig do servidor de API de gerenciamento.
    • CLUSTER_NAME: o nome do cluster do Kubernetes que será atualizado, como user-vm-2.
    • CLUSTER_NAMESPACE: o namespace do cluster do Kubernetes. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.
    • TARGET_VERSION: a versão de destino do upgrade identificada na etapa anterior, como 1.30.1000-gke.85.

    O tempo médio de upgrade de um cluster do Kubernetes é de aproximadamente 20 minutos.

  4. Verifique o upgrade do cluster monitorando o recurso UserClusterUpgradeRequest:

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

    Substitua:

    • MANAGEMENT_API_SERVER: o caminho para o arquivo kubeconfig do servidor de API de gerenciamento.
    • CLUSTER_NAME: o nome do cluster do Kubernetes que será atualizado, como user-vm-2.
    • CLUSTER_NAMESPACE: o namespace do cluster do Kubernetes. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.

    Inspecione a seção Spec da saída. Ele contém Current Version e Target Version. O upgrade ainda estará em andamento se Current Version e 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
    

    O upgrade será concluído e bem-sucedido quando a condição Succeeded tiver o status True e o Current Version corresponder ao Target Version.

    Se a condição Succeeded tiver o status False, o upgrade falhou. Se você encontrar erros relacionados ao upgrade do cluster do Kubernetes, entre em contato com o grupo de operadores de infraestrutura para receber mais ajuda.

Verificar o status do cluster após o upgrade

Depois que o cluster do Kubernetes for atualizado, confirme se o cluster e os componentes dele estão íntegros inspecionando o status do recurso Cluster:

  1. Veja os campos status.conditions e status.componentsConditions do recurso Cluster:

    kubectl --kubeconfig MANAGEMENT_API_SERVER \
        get cluster CLUSTER_NAME \
        -n CLUSTER_NAMESPACE -o yaml
    

    Substitua:

    • MANAGEMENT_API_SERVER: o caminho para o arquivo kubeconfig do servidor de API de gerenciamento.
    • CLUSTER_NAME: o nome do cluster do Kubernetes, como user-vm-2.
    • CLUSTER_NAMESPACE: o namespace do cluster do Kubernetes. Para clusters compartilhados, use o namespace platform. Para clusters padrão, use o namespace do projeto do cluster.
  2. Na saída, verifique o seguinte na seção status:

    • Em status.conditions, verifique se a condição Ready tem um status de True e se a condição Reconciling tem um status de False.
    • Em status.componentsConditions, verifique se a condição Ready tem um status de True, se a condição Reconciling tem um status de False e se nenhuma condição mostra um reason de ReconciliationError ou Reconciling.

    Para clusters do Kubernetes com três nós do plano de controle e três nós de trabalho, o upgrade leva aproximadamente 20 minutos. Se o cluster ou os componentes dele permanecerem em um estado Reconciling após 20 minutos ou se alguma condição mostrar ReconciliationError, entre em contato com o grupo de operadores de infraestrutura para receber mais ajuda.

A seguir