Actualizar un clúster

En este documento se explica cómo actualizar la versión de Kubernetes de un clúster de Kubernetes aislado de Google Distributed Cloud (GDC). Debes planificar actualizaciones periódicas de tus clústeres para asegurarte de que incorporan las funciones y correcciones más recientes de Kubernetes.

Este documento está dirigido a administradores de TI, ingenieros de seguridad y administradores de redes que pertenezcan al grupo de administradores de la plataforma y que sean responsables de gestionar los recursos de Kubernetes de su organización. Para obtener más información, consulta la documentación sobre audiencias de GDC aislado.

Antes de empezar

Para completar las tareas de este documento, debes solicitar los permisos necesarios y preparar tu entorno.

Solicitar roles de gestión de identidades y accesos

Debes tener roles específicos para obtener los permisos que necesitas para actualizar tu clúster de Kubernetes. Debes solicitar roles con el ámbito de tu proyecto y tu organización.

Roles de la organización

Para enumerar las versiones de actualización disponibles de un clúster de Kubernetes, pide al administrador de gestión de identidades y accesos de tu organización que te asigne el rol Administrador de clúster de usuarios (user-cluster-admin). Este rol no está vinculado a un espacio de nombres.

Si gestionas un clúster estándar y no puedes obtener el rol Administrador de clúster de usuarios de tu grupo de administradores de plataforma, debes pedirles que te proporcionen la lista de versiones de actualización de Kubernetes disponibles.

Roles de proyecto

Para crear, eliminar, editar o ver actualizaciones de clústeres, pide al administrador de gestión de identidades y accesos de tu proyecto que te conceda el rol Administrador de clústeres estándar (standard-cluster-admin). Este rol está vinculado al espacio de nombres de tu proyecto.

Prepara tu entorno

Para ejecutar comandos en un clúster de Kubernetes mediante la API, asegúrate de tener los siguientes recursos:

  • Descarga e instala la CLI gdcloud.

  • Instala la CLI de kubectl.

  • Busca el nombre del clúster de Kubernetes o pregunta a un miembro del grupo de administradores de la plataforma cuál es el nombre del clúster.

  • Usa el nombre del clúster de Kubernetes para sustituir CLUSTER_NAME en estas instrucciones.

  • Inicia sesión y genera el archivo kubeconfig del servidor de la API de gestión.

  • Usa la ruta kubeconfig del servidor de la API de gestión para sustituir MANAGEMENT_API_SERVER en estas instrucciones.

Actualizar un clúster de Kubernetes

Usa la API UserClusterUpgradeRequest para actualizar un clúster de Kubernetes.

Para actualizar un clúster de Kubernetes mediante la API, sigue estos pasos:

  1. Para enumerar las versiones de actualización de Kubernetes disponibles, imprime el valor de kubernetesVersion de los objetos UserClusterMetadata:

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

    Sustituye MANAGEMENT_API_SERVER por la ruta al archivo kubeconfig del servidor de la API de gestión.

    El comando devuelve una lista de versiones de Kubernetes disponibles:

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Anota la versión de Kubernetes de la salida anterior a la que quieras actualizar tu clúster. La targetVersion que especifiques en la solicitud de actualización del paso siguiente debe ser una de estas versiones disponibles.

  3. Solicita la actualización del clúster creando un 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
    

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER: la ruta al archivo kubeconfig del servidor de la API de gestión.
    • CLUSTER_NAME: el nombre del clúster de Kubernetes que se va a actualizar, como user-vm-2.
    • CLUSTER_NAMESPACE: el espacio de nombres del clúster de Kubernetes. En el caso de los clústeres compartidos, usa el espacio de nombres platform. En el caso de los clústeres estándar, utilice el espacio de nombres del proyecto del clúster.
    • TARGET_VERSION: la versión de destino de la actualización identificada en el paso anterior, como 1.30.1000-gke.85.

    El tiempo medio de actualización de un clúster de Kubernetes es de unos 20 minutos.

  4. Verifica la actualización del clúster monitorizando el UserClusterUpgradeRequest recurso:

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

    Haz los cambios siguientes:

    • MANAGEMENT_API_SERVER: la ruta al archivo kubeconfig del servidor de la API de gestión.
    • CLUSTER_NAME: el nombre del clúster de Kubernetes que se va a actualizar, como user-vm-2.
    • CLUSTER_NAMESPACE: el espacio de nombres del clúster de Kubernetes. En el caso de los clústeres compartidos, usa el espacio de nombres platform. En el caso de los clústeres estándar, utilice el espacio de nombres del proyecto del clúster.

    Inspecciona la sección Spec del resultado. Contiene Current Version y Target Version. La actualización sigue en curso si Current Version y Target Version son 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
    

    La actualización se habrá completado correctamente cuando la condición Succeeded tenga el estado True y el valor de Current Version coincida con el de Target Version.

    Si la condición Succeeded tiene el estado False, significa que no se ha podido completar la actualización. Si tienes problemas relacionados con la actualización de tu clúster de Kubernetes, ponte en contacto con el grupo de operadores de infraestructura para obtener más ayuda.

Verificar los subcomponentes del clúster después de la actualización

Una vez que hayas actualizado correctamente tu clúster de Kubernetes, te recomendamos que confirmes que todos los subcomponentes del clúster están en buen estado.

Comprueba si hay fallos en los subcomponentes de tu clúster:

  1. Comprueba que no haya subcomponentes que muestren un mensaje ReconciliationError:

    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)"'
    

    Si la salida devuelve algún subcomponente, ponte en contacto con tu grupo de operadores de infraestructura para obtener más ayuda.

  2. Comprueba que no haya subcomponentes que muestren el mensaje 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)"'
    

    En el caso de los clústeres de Kubernetes con tres nodos de plano de control y tres nodos de trabajador, la actualización tarda aproximadamente 20 minutos. Si sigues viendo subcomponentes en estado Reconciling después de 20 minutos, ponte en contacto con tu grupo de operadores de infraestructura para obtener más ayuda.

Siguientes pasos