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 para tus clústeres y asegurarte de que incorporan las últimas funciones y correcciones 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 en su organización. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

Antes de empezar

  • Descarga e instala la CLI de gdcloud.

  • Instala la CLI de kubectl. Para obtener más información, consulta Instalar componentes.

  • Genera un archivo kubeconfig para el servidor de la API de gestión en la zona de destino. Para obtener más información, consulta el artículo sobre los recursos de clúster de Kubernetes de zona.

  • Para obtener los permisos que necesitas para enumerar las versiones de actualización disponibles, pide a tu administrador de gestión de identidades y accesos de la organización que te asigne el rol Administrador de clúster de usuarios (user-cluster-admin).

    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 la plataforma, debes pedirles que te proporcionen la lista de versiones de actualización de Kubernetes disponibles.

  • Para obtener los permisos que necesitas para configurar una actualización de clúster, pide al administrador de gestión de identidades y accesos de tu organización que te conceda el rol Administrador de clúster estándar (standard-cluster-admin).

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 ver una lista de 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. El targetVersion que especifiques en la solicitud de actualización del siguiente paso debe ser una de estas versiones disponibles.

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

    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, usa 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 errores 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