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 de rutina para tus clústeres y asegurarte de que incorporen las funciones y correcciones más recientes de Kubernetes.

Este documento está dirigido a públicos como administradores de TI, ingenieros de seguridad y administradores de redes dentro del grupo de administradores de la plataforma, que son responsables de administrar los recursos de Kubernetes dentro de su organización. Para obtener más información, consulta Públicos de la documentación de Google Distributed Cloud aislado.

Antes de comenzar

  • Descarga y, luego, instala la CLI de gdcloud.

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

  • Genera un archivo kubeconfig para el servidor de la API de administración en la zona de destino. Para obtener más información, consulta Recursos zonales del clúster de Kubernetes.

  • Para obtener los permisos que necesitas para enumerar las versiones de actualización disponibles, pídele a tu administrador de IAM de la organización que te otorgue el rol de Administrador de clústeres de usuario (user-cluster-admin).

    Si administras un clúster estándar y no puedes obtener el rol de administrador del clúster de usuario de tu grupo de administradores de la plataforma, debes solicitar que te proporcionen la lista de versiones de actualización de Kubernetes disponibles.

  • Para obtener los permisos que necesitas para configurar una actualización del clúster, pídele al administrador de IAM de la organización que te otorgue el rol de Administrador de clústeres estándar (standard-cluster-admin).

Actualiza un clúster de Kubernetes

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

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

  1. Imprime el valor de kubernetesVersion de los objetos UserClusterMetadata para enumerar las versiones de actualización de Kubernetes disponibles:

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

    Reemplaza MANAGEMENT_API_SERVER por la ruta de acceso al archivo kubeconfig del servidor de la API de administración.

    El comando devuelve una lista de las versiones de Kubernetes disponibles:

    TARGET_VERSION
    1.30.1000-gke.85
    
  2. Ten en cuenta la versión de Kubernetes del resultado anterior a la que deseas 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
    

    Reemplaza lo siguiente:

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

    El tiempo promedio de actualización de un clúster de Kubernetes es de aproximadamente 20 minutos.

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

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

    Reemplaza lo siguiente:

    • MANAGEMENT_API_SERVER: Es la ruta de acceso al archivo kubeconfig del servidor de la API de administración.
    • CLUSTER_NAME: Es el nombre del clúster de Kubernetes que se actualizará, como user-vm-2.
    • CLUSTER_NAMESPACE: Es el espacio de nombres del clúster de Kubernetes. Para los clústeres compartidos, usa el espacio de nombres platform. Para 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 aún está 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 completa correctamente cuando la condición Succeeded tiene el estado True y el Current Version coincide con el Target Version.

    Si la condición Succeeded tiene el estado False, significa que no se pudo realizar la actualización. Si encuentras errores relacionados con la actualización de tu clúster de Kubernetes, comunícate con el grupo de operadores de infraestructura para obtener más ayuda.

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

Después de actualizar correctamente tu clúster de Kubernetes, te recomendamos que confirmes que todos los subcomponentes del clúster estén en buen estado.

Verifica si hay fallas en los subcomponentes del clúster:

  1. Verifica que no haya subcomponentes que muestren un mensaje de 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 el resultado muestra algún subcomponente, comunícate con tu grupo de operadores de infraestructura para obtener más ayuda.

  2. Verifica que no haya subcomponentes que muestren un mensaje de 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 del plano de control y tres nodos trabajadores, el tiempo de actualización es de aproximadamente 20 minutos. Si sigues viendo subcomponentes en estado Reconciling después de 20 minutos, comunícate con tu grupo de operadores de infraestructura para obtener más ayuda.

¿Qué sigue?