Gestionar grupos de nodos

Cuando creas un clúster de Kubernetes aislado de Google Distributed Cloud (GDC), el número y el tipo de nodos que especifiques crearán el primer grupo de nodos del clúster. Puedes realizar las siguientes tareas en grupos de nodos de un clúster ya creado a medida que cambien sus requisitos de computación:

  • Añadir un grupo de nodos: añade grupos de nodos a medida que aumente la demanda de las cargas de trabajo de tu clúster.

  • Ver un grupo de nodos: consulta las características y el estado de los grupos de nodos que ya tienes.

  • Cambiar el tamaño de un grupo de nodos: aumenta o reduce manualmente el tamaño de tus grupos de nodos para adaptarlos a las fluctuaciones del tráfico de las cargas de trabajo.

  • Eliminar un grupo de nodos: elimina grupos de nodos si la demanda de las cargas de trabajo de tu clúster disminuye o si quieres eliminar tipos de máquinas que ya no son adecuados para tus operaciones de contenedores.

Para obtener más información sobre los grupos de nodos de un clúster, consulta Acerca de los nodos.

Este documento está dirigido a desarrolladores de aplicaciones del grupo de operadores de aplicaciones y a administradores de TI del grupo de administradores de plataformas que se encargan de gestionar los clústeres de Kubernetes de su organización. Para obtener más información, consulta Audiencias de la documentación aislada de GDC.

Antes de empezar

Para completar las tareas de este documento, debes tener los siguientes recursos y roles:

  • Para ver y gestionar grupos de nodos en un clúster de Kubernetes compartido, pide al administrador de IAM de tu organización que te conceda los siguientes roles:

    • Administrador de clústeres de usuario (user-cluster-admin)
    • Lector de nodos de clúster de usuario (user-cluster-node-viewer)

    Estos roles no están vinculados a un espacio de nombres.

  • Para ver y gestionar grupos de nodos en un clúster de Kubernetes estándar, pide al administrador de gestión de identidades y accesos de tu organización que te asigne el rol Administrador de clúster estándar (standard-cluster-admin). Este rol está vinculado al espacio de nombres de tu proyecto.

  • Para ejecutar comandos en un clúster de Kubernetes, asegúrate de que tienes los siguientes recursos:

    • 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.

    • Inicia sesión y genera el archivo kubeconfig del clúster de Kubernetes si no tienes uno.

    • Usa la ruta kubeconfig del clúster de Kubernetes para sustituir KUBERNETES_CLUSTER_KUBECONFIG en estas instrucciones.

Añadir un grupo de nodos

Para añadir un grupo de nodos a un clúster de Kubernetes, sigue estos pasos:

Consola

  1. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
  2. En la lista de clústeres, haz clic en el clúster que quieras. Se mostrará la página Detalles del clúster.
  3. Selecciona Grupos de nodos > Añadir grupo de nodos.
  4. Asigna un nombre al pool de nodos. No puedes modificar el nombre después de crear el grupo de nodos.
  5. Especifica el número de nodos de trabajador que se crearán en el grupo de nodos.
  6. Selecciona la clase de máquina que mejor se adapte a los requisitos de tu carga de trabajo. Las clases de máquina se muestran en los siguientes ajustes:
    • Tipo de máquina
    • vCPU
    • Memoria
  7. Haz clic en Guardar.

API

  1. Abre la especificación de recursos personalizados Cluster con la CLI de kubectl mediante el editor interactivo:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: el nombre del clúster.
    • KUBERNETES_CLUSTER_NAMESPACE: el espacio de nombres del clúster. 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.
    • MANAGEMENT_API_SERVER: la ruta kubeconfig del servidor de la API zonal donde se aloja el clúster de Kubernetes. Si aún no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Iniciar sesión para obtener más información.
  2. Añade una entrada en la sección nodePools:

    nodePools:
    ...
    - machineTypeName: MACHINE_TYPE
      name: NODE_POOL_NAME
      nodeCount: NUMBER_OF_WORKER_NODES
      taints: TAINTS
      labels: LABELS
      acceleratorOptions:
        gpuPartitionScheme: GPU_PARTITION_SCHEME
    

    Haz los cambios siguientes:

    • MACHINE_TYPE: el tipo de máquina de los nodos de trabajador del grupo de nodos. Consulta los tipos de máquinas disponibles para ver qué se puede configurar.
    • NODE_POOL_NAME: el nombre del grupo de nodos.
    • NUMBER_OF_WORKER_NODES: el número de nodos de trabajo que se aprovisionarán en el grupo de nodos.
    • TAINTS: los taints que se aplicarán a los nodos de este grupo de nodos. Este campo es opcional.
    • LABELS: las etiquetas que se aplicarán a los nodos de este grupo de nodos. Contiene una lista de pares clave-valor. Este campo es opcional.
    • GPU_PARTITION_SCHEME: el esquema de partición de GPU, si ejecutas cargas de trabajo de GPU. Por ejemplo, mixed-2. La GPU no se particiona si no se define este campo. Para ver los perfiles de GPU con varias instancias (MIG) disponibles, consulta los perfiles de MIG admitidos.
  3. Guarda el archivo y cierra el editor.

Ver grupos de nodos

Para ver los grupos de nodos de un clúster de Kubernetes, sigue estos pasos:

Consola

  1. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
  2. En la lista de clústeres, haz clic en el clúster que quieras. Se mostrará la página Detalles del clúster.
  3. Selecciona Grupos de nodos.

Se muestra la lista de grupos de nodos que se ejecutan en el clúster. En esta página puede gestionar los grupos de nodos del clúster.

API

  • Para ver los grupos de nodos de un clúster de Kubernetes específico, sigue estos pasos:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: el nombre del clúster.
    • KUBERNETES_CLUSTER_NAMESPACE: el espacio de nombres del clúster. 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.

    El resultado debería ser similar al siguiente:

    [
      {
        "conditions": [
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "NodepoolReady",
            "status": "True",
            "type": "Ready"
          },
          {
            "lastTransitionTime": "2023-08-31T22:16:17Z",
            "message": "",
            "observedGeneration": 2,
            "reason": "ReconciliationCompleted",
            "status": "False",
            "type": "Reconciling"
          }
        ],
        "name": "worker-node-pool",
        "readyNodes": 3,
        "readyTimestamp": "2023-08-31T18:59:46Z",
        "reconcilingNodes": 0,
        "stalledNodes": 0,
        "unknownNodes": 0
      }
    ]
    

Cambiar el tamaño de los grupos de nodos

Puedes cambiar manualmente el tamaño de los grupos de nodos de un clúster de Kubernetes aumentando o reduciendo el tamaño del grupo. No puedes seleccionar un nodo específico para eliminarlo al reducir la escala de un grupo de nodos.

Para escalar un grupo de nodos en un clúster, sigue estos pasos:

Consola

  1. En el panel de control, selecciona el proyecto en el que se encuentra el clúster que quieres editar.
  2. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
  3. Selecciona el nombre del clúster al que está asociado el grupo de nodos. Se mostrará la página Detalles del clúster.
  4. Haz clic en la pestaña Grupos de nodos.
  5. Selecciona el icono Editar del grupo de nodos cuyo tamaño quieras modificar. Se muestra la petición Editar grupo de nodos.
  6. Actualice el campo Número de nodos para reflejar la nueva cantidad de nodos que se necesitan en el grupo de nodos. Puedes aumentar o reducir el número de nodos para adaptarlo a los requisitos de tu carga de trabajo.

  7. Haz clic en Guardar.

  8. Vuelve a la pestaña Grupos de nodos de tu clúster y confirma que el grupo de nodos redimensionado tiene el estado Ready y el número correcto de nodos. El grupo de nodos puede tardar unos minutos en escalarse a las especificaciones que hayas indicado.

    Confirma que tu grupo de nodos está listo mediante la consola.

API

  1. Abre la especificación de recursos personalizados Cluster con la CLI de kubectl mediante el editor interactivo:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: el nombre del clúster que aloja el grupo de nodos.
    • KUBERNETES_CLUSTER_NAMESPACE: el espacio de nombres del clúster. 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.
    • MANAGEMENT_API_SERVER: la ruta kubeconfig del servidor de la API zonal donde se aloja el clúster de Kubernetes. Si no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Recursos del servidor de la API de gestión zonal.
  2. Actualiza el campo nodeCount del grupo de nodos cuyo tamaño quieras cambiar:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: NUMBER_OF_WORKER_NODES
    

    Sustituye NUMBER_OF_WORKER_NODES por el número actualizado de nodos de trabajador que se aprovisionarán en el grupo de nodos.

  3. Guarda el archivo y cierra el editor.

  4. Para comprobar que el escalado de nodos se ha completado, consulta la configuración del grupo de nodos:

    kubectl get clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE -o json \
        --kubeconfig MANAGEMENT_API_SERVER | jq .status.workerNodePoolStatuses
    

    Confirma que el número readyNodes refleja la cantidad de nodos que has definido para el grupo de nodos. El grupo de nodos puede tardar unos minutos en escalarse según tus especificaciones.

Eliminar un grupo de nodos

Al eliminar un grupo de nodos, se eliminan los nodos y las rutas hacia ellos. Estos nodos expulsan y reprograman los pods que se ejecutan en ellos. Si los pods tienen selectores de nodos específicos, es posible que permanezcan en un estado no programable si ningún otro nodo del clúster cumple los criterios.

Asegúrate de tener al menos tres nodos de trabajo antes de eliminar un grupo de nodos para que tu clúster tenga suficiente espacio de computación para funcionar correctamente.

Para eliminar un grupo de nodos, sigue estos pasos:

Consola

  1. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.

  2. Haz clic en el clúster que aloja el grupo de nodos que quieres eliminar.

  3. Selecciona Grupos de nodos.

  4. Haz clic en Eliminar junto al grupo de nodos que quieras eliminar.

API

  1. Abre la especificación de recursos personalizados Cluster con la CLI de kubectl mediante el editor interactivo:

    kubectl edit clusters.cluster.gdc.goog/KUBERNETES_CLUSTER_NAME \
        -n KUBERNETES_CLUSTER_NAMESPACE \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: el nombre del clúster.
    • KUBERNETES_CLUSTER_NAMESPACE: el espacio de nombres del clúster. 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.
    • MANAGEMENT_API_SERVER: la ruta kubeconfig del servidor de la API zonal donde se aloja el clúster de Kubernetes. Si no has generado un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Recursos del servidor de la API de gestión zonal.
  2. Elimina la entrada del grupo de nodos de la sección nodePools. Por ejemplo, en el siguiente fragmento, debes quitar los campos machineTypeName, name y nodeCount:

    nodePools:
    # Several lines of code are omitted here.
    - machineTypeName: n2-standard-2-gdc
      name: nodepool-1
      nodeCount: 3
    

    Asegúrate de eliminar todos los campos del grupo de nodos que vas a eliminar.

  3. Guarda el archivo y cierra el editor.