Gestionar grupos de nodos

Un grupo de nodos es un grupo de nodos dentro de un clúster de Kubernetes que tienen la misma configuración. Los grupos de nodos usan una especificación NodePool. Cada nodo del grupo tiene una etiqueta de nodo de Kubernetes, cuyo valor es el nombre del grupo de nodos. De forma predeterminada, todos los grupos de nodos nuevos ejecutan la misma versión de Kubernetes que el plano de control.

Cuando creas un clúster de Kubernetes, el número y el tipo de nodos que especificas crean el primer grupo de nodos del clúster. Puedes añadir grupos de nodos adicionales de diferentes tamaños y tipos a tu clúster. Todos los nodos de un mismo grupo de nodos son idénticos entre sí.

Los grupos de nodos personalizados son útiles cuando se programan pods que requieren más recursos que otros, como más memoria o espacio en disco local. Puedes usar taints de nodos si necesitas tener más control sobre la programación de los pods.

Puede crear y eliminar grupos de nodos de forma individual sin que afecte a todo el clúster. No puedes configurar un solo nodo en un pool de nodos. Los cambios de configuración afectan a todos los nodos del grupo de nodos.

Puedes cambiar el tamaño de los grupos de nodos de un clúster aumentando o reduciendo el tamaño del grupo. Reducir el tamaño de un grupo de nodos es un proceso automatizado en el que se disminuye el tamaño del grupo y el sistema de GDC vacía y expulsa automáticamente un nodo arbitrario. No puedes seleccionar un nodo específico para eliminarlo al reducir la escala de un grupo de nodos.

Antes de empezar

Para ver y gestionar grupos de nodos en un clúster de Kubernetes, debes tener 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.

Añadir un grupo de nodos

Cuando creas un clúster de Kubernetes desde la consola de GDC, puedes personalizar el grupo de nodos predeterminado y crear grupos de nodos adicionales antes de que se inicialice la creación del clúster. Si debes 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 platform \
        --kubeconfig MANAGEMENT_API_SERVER
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: nombre del clúster.
    • MANAGEMENT_API_SERVER: 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 la sección 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: 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 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 platform \
        -o json --kubeconfig MANAGEMENT_API_SERVER | \
        jq .status.workerNodePoolStatuses
    

    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
      }
    ]
    

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 platform \
          --kubeconfig MANAGEMENT_API_SERVER
    

    Haz los cambios siguientes:

    • KUBERNETES_CLUSTER_NAME: nombre del clúster.
    • MANAGEMENT_API_SERVER: 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 la sección Iniciar sesión para obtener más información.
  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:
    ...
    - 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.