Administre los grupos de nodos

Un grupo de nodos es un conjunto 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, que tiene el nombre del grupo de nodos como valor. 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, la cantidad y el tipo de nodos que especificas crean el primer grupo de nodos del clúster. Puedes agregar grupos de nodos adicionales de diferentes tamaños y tipos a tu clúster. Todos los nodos en un grupo de nodos determinado 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 el disco local. Puedes usar taints de nodos si necesitas más control sobre la programación de los pods.

Puedes crear y borrar grupos de nodos de forma individual sin afectar a todo el clúster. No puedes configurar un solo nodo en un grupo de nodos. Todos los cambios en la configuración afectan a todos los nodos del grupo de nodos.

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

Antes de comenzar

Para ver y administrar grupos de nodos en un clúster de Kubernetes, debes tener los siguientes roles:

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

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

Agregue 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 agregar un grupo de nodos a un clúster de Kubernetes existente, completa los siguientes pasos:

Console

  1. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
  2. Haz clic en el clúster de la lista. Se muestra la página Detalles del clúster.
  3. Selecciona Grupos de nodos > Agregar grupo de nodos.
  4. Asigna un nombre al grupo de nodos. No puedes modificar el nombre después de crear el grupo de nodos.
  5. Especifica la cantidad de nodos trabajadores 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áquinas se muestran en los siguientes parámetros de configuración:
    • Tipo de máquina
    • CPU virtual
    • Memoria
  7. Haz clic en Guardar.

API

  1. Abre la especificación del recurso personalizado Cluster con la CLI de kubectl usando el editor interactivo:

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

    Reemplaza lo siguiente:

    • KUBERNETES_CLUSTER_NAME: Es el nombre del clúster.
    • MANAGEMENT_API_SERVER: Es la ruta de kubeconfig del servidor de la API zonal en la que se aloja el clúster de Kubernetes. Si aún no generaste un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Accede para obtener más detalles.
  2. Agrega una entrada nueva 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
    

    Reemplaza lo siguiente:

    • MACHINE_TYPE: Es el tipo de máquina para los nodos trabajadores del grupo de nodos. Consulta los tipos de máquinas disponibles para ver qué se puede configurar.
    • NODE_POOL_NAME: Es el nombre del grupo de nodos.
    • NUMBER_OF_WORKER_NODES: Es la cantidad de nodos trabajadores que se aprovisionarán en el grupo de nodos.
    • TAINTS: Son los taints que se aplicarán a los nodos de este grupo de nodos. Este paso es opcional,
    • LABELS: Son 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: 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 configura este campo. Para conocer los perfiles de GPU multiinstancia (MIG) disponibles, consulta Perfiles de MIG compatibles.
  3. Guarda el archivo y sal del editor.

Visualiza grupos de nodos

Para ver los grupos de nodos existentes en un clúster de Kubernetes, completa los siguientes pasos:

Console

  1. En el menú de navegación, selecciona Kubernetes Engine > Clústeres.
  2. Haz clic en el clúster de la lista. Se muestra 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, puedes administrar los grupos de nodos del clúster.

API

  • Visualiza los grupos de nodos de un clúster de Kubernetes específico:

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

    El resultado es similar a este:

    [
      {
        "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
      }
    ]
    

Borrar un grupo de nodos

Cuando se borra un grupo de nodos, se borran los nodos y las rutas a ellos. Estos nodos expulsan y reprograman los pods que se ejecutan en ellos. Si los Pods tienen selectores de nodo específicos, pueden mantenerse en una condición no programable si ningún otro nodo en el clúster cumple con los criterios.

Asegúrate de tener al menos tres nodos trabajadores antes de borrar un grupo de nodos para garantizar que tu clúster tenga suficiente espacio de procesamiento para ejecutarse de manera eficaz.

Para borrar un grupo de nodos, completa los siguientes pasos:

Console

  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 deseas borrar.

  3. Selecciona Grupos de nodos.

  4. Haz clic en Borrar junto al grupo de nodos que deseas borrar.

API

  1. Abre la especificación del recurso personalizado Cluster con la CLI de kubectl usando el editor interactivo:

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

    Reemplaza lo siguiente:

    • KUBERNETES_CLUSTER_NAME: Es el nombre del clúster.
    • MANAGEMENT_API_SERVER: Es la ruta de kubeconfig del servidor de la API zonal en la que se aloja el clúster de Kubernetes. Si aún no generaste un archivo kubeconfig para el servidor de la API en tu zona de destino, consulta Accede para obtener más detalles.
  2. Quita 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 quitar todos los campos del grupo de nodos que borrarás.

  3. Guarda el archivo y sal del editor.