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

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

Solicita roles de IAM

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

Roles de la organización

Para enumerar las versiones de actualización disponibles para un clúster de Kubernetes, 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). Este rol no está vinculado a un espacio de nombres.

Si administras un clúster estándar y no puedes obtener el rol de administrador de clústeres 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.

Funciones de proyecto

Para crear, borrar, editar o ver actualizaciones de clústeres, pídele a tu administrador de IAM del proyecto que te otorgue el rol de administrador de clústeres estándar (standard-cluster-admin). Este rol está vinculado al espacio de nombres de tu proyecto.

Prepara el entorno

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

  • Descarga y luego, instala la CLI de gdcloud.

  • Instala la CLI de kubectl.

  • Ubica el nombre del clúster de Kubernetes o pregúntale 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 reemplazar CLUSTER_NAME en estas instrucciones.

  • Accede y genera el archivo kubeconfig para el servidor de la API de administración.

  • Usa la ruta de acceso kubeconfig del servidor de la API de Management para reemplazar MANAGEMENT_API_SERVER en estas instrucciones.

Actualiza un clúster de Kubernetes

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

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

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

    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 muestra una lista de las versiones de Kubernetes disponibles:

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

  3. Para solicitar la actualización del clúster, crea 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: la ruta de acceso al archivo kubeconfig del servidor de la API de administración
    • CLUSTER_NAME: el nombre del clúster de Kubernetes que se actualizará, como user-vm-2
    • CLUSTER_NAMESPACE: 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: la versión de destino para 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. Para verificar la actualización del clúster, supervisa el recurso UserClusterUpgradeRequest:

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

    Reemplaza lo siguiente:

    • MANAGEMENT_API_SERVER: la ruta de acceso al archivo kubeconfig del servidor de la API de administración
    • CLUSTER_NAME: el nombre del clúster de Kubernetes que se actualizará, como user-vm-2
    • CLUSTER_NAMESPACE: 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 difieren.

    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 un estado True y la Current Version coincide con la Target Version.

    Si la condición Succeeded tiene un estado False, la actualización falló. 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 el estado del clúster después de la actualización

Después de actualizar tu clúster de Kubernetes, inspecciona el estado del recurso Cluster para confirmar que el clúster y sus componentes estén en buen estado:

  1. Visualiza los campos status.conditions y status.componentsConditions del recurso Cluster:

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

    Reemplaza lo siguiente:

    • MANAGEMENT_API_SERVER: la ruta de acceso al archivo kubeconfig del servidor de la API de administración
    • CLUSTER_NAME: el nombre del clúster de Kubernetes, como user-vm-2
    • CLUSTER_NAMESPACE: 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.
  2. En el resultado, verifica lo siguiente en la sección status:

    • En status.conditions, verifica que la condición Ready tenga un status de True, y que la condición Reconciling tenga un status de False.
    • En status.componentsConditions, verifica que la condición Ready tenga un status de True, que la condición Reconciling tenga un status de False, y que ninguna condición muestre un reason de ReconciliationError o Reconciling.

    Para los clústeres de Kubernetes con tres nodos del plano de control y tres nodos trabajadores, la actualización tarda aproximadamente 20 minutos. Si el clúster o sus componentes permanecen en un estado Reconciling después de 20 minutos, o si alguna condición muestra ReconciliationError, comunícate con tu grupo de operadores de infraestructura para obtener más ayuda.

¿Qué sigue?