Acerca de los grupos de nodos


En esta página se explica cómo funcionan los grupos de nodos en Google Kubernetes Engine (GKE). Un grupo de nodos es un conjunto de nodos de un clúster que tienen la misma configuración. En el modo Estándar de GKE, puedes elegir entre varias opciones para tus grupos de nodos y satisfacer así las necesidades de tus cargas de trabajo. Si decides usar Autopilot, no tienes que configurar los grupos de nodos, ya que GKE gestiona los nodos por ti.

Para obtener más información sobre cómo crear clústeres en modo Estándar, consulta los artículos Crear un clúster regional y Crear un clúster de zona. Para saber cómo gestionar grupos de nodos en clústeres Estándar, consulta el artículo Añadir y gestionar grupos de nodos.

Información general

Un grupo de nodos es un conjunto de nodos de un clúster que tienen la misma configuración. Los grupos de nodos usan una especificación NodeConfig. Cada nodo del grupo tiene una etiqueta de nodo de Kubernetes, cloud.google.com/gke-nodepool, cuyo valor es el nombre del grupo de nodos.

Cuando creas un clúster en modo Estándar, el número y el tipo de nodos que especifiques se utilizan para crear el primer grupo de nodos del clúster. De forma predeterminada, este primer grupo de nodos (conocido como grupo de nodos predeterminado) consta de tres nodos en cada una de las zonas de computación del clúster, con la imagen de nodo cos_containerd predeterminada y un tipo de máquina de uso general. Puede especificar varias propiedades para el grupo de nodos en función de los requisitos de su carga de trabajo. Por ejemplo, puedes crear un grupo de nodos en tu clúster con SSD locales, una plataforma de CPU mínima, máquinas virtuales de Spot, una imagen de nodo diferente, tipos de máquina diferentes o una interfaz de red virtual más eficiente.

Después, puedes añadir más grupos de nodos de diferentes tamaños y tipos a tu clúster. Todos los nodos de un grupo de nodos determinado son idénticos entre sí.

Los grupos de nodos personalizados son útiles cuando necesitas programar pods que requieren más recursos que otros, como más memoria o más espacio en disco local. Si necesitas tener más control sobre dónde se programan los pods, puedes usar taints de nodos.

Puedes crear, actualizar y eliminar node pools de forma individual sin que afecte a todo el clúster. No puedes configurar un solo nodo de un grupo de nodos. Cualquier cambio de configuración afecta a todos los nodos del grupo.

Puedes cambiar el tamaño de los grupos de nodos de un clúster añadiendo o eliminando nodos.

De forma predeterminada, todos los grupos de nodos nuevos ejecutan la misma versión de Kubernetes que el plano de control. Los grupos de nodos se pueden actualizar manualmente o automáticamente. También puedes ejecutar varias versiones de nodos de Kubernetes en cada grupo de nodos de tu clúster, actualizar cada grupo de nodos de forma independiente y orientar diferentes grupos de nodos a implementaciones específicas.

Desplegar servicios en grupos de nodos específicos

Cuando defines un servicio, puedes controlar indirectamente en qué grupo de nodos se despliega. El pool de nodos no depende de la configuración del servicio, sino de la configuración del pod.

  • Puedes desplegar un pod de forma explícita en un grupo de nodos específico definiendo un nodeSelector en el manifiesto del pod. De esta forma, se obliga a un pod a ejecutarse solo en los nodos de ese grupo de nodos. Por ejemplo, consulta Desplegar un pod en un pool de nodos específico.

  • Puede especificar solicitudes de recursos para los contenedores. El pod solo se ejecuta en nodos que cumplen las solicitudes de recursos. Por ejemplo, si la definición del pod incluye un contenedor que requiere cuatro CPUs, el servicio no seleccionará los pods que se ejecuten en nodos con dos CPUs.

Nodos en clústeres multizona

Si has creado un clúster multizona, todos los grupos de nodos se replicarán automáticamente en esas zonas. Cualquier grupo de nodos nuevo se crea automáticamente en esas zonas. Del mismo modo, si eliminas un grupo de nodos, también se eliminará de las zonas adicionales.

Ten en cuenta que, debido a este efecto multiplicativo, puede que se consuma más cuota de tu proyecto en una región específica al crear grupos de nodos.

Eliminar grupos de nodos

Cuando eliminas un grupo de nodos, GKE desvía todos los nodos del grupo de nodos, elimina y reprograma todos los pods. El proceso de drenaje implica que GKE elimina los pods de cada nodo del grupo de nodos. Cada nodo de un grupo de nodos se vacía eliminando los pods con un periodo de finalización gradual asignado de MAX_POD. MAX_POD es el máximo de terminationGracePeriodSeconds definido en los pods programados en el nodo, con un límite de una hora. Los ajustes de PodDisruptionBudget no se tienen en cuenta al eliminar un grupo de nodos.

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.

Cuando se elimina un clúster, GKE no sigue este proceso de finalización correcta de los nodos mediante el drenaje. Si las cargas de trabajo que se ejecutan en un clúster deben finalizar correctamente, usa kubectl drain para limpiar las cargas de trabajo antes de eliminar el clúster.

Para eliminar un grupo de nodos, consulta Eliminar un grupo de nodos.

Siguientes pasos