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 dentro 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 las necesidades de tu carga de trabajo. Si eliges usar Autopilot, no necesitas configurar grupos de nodos, ya que GKE administra los nodos por ti.
Para obtener más información sobre cómo crear clústeres en modo Estándar, consulta Crea un clúster regional y Crea un clúster zonal. Si quieres obtener información para administrar grupos de nodos en clústeres Standard existentes, consulta Cómo agregar y administrar grupos de nodos.
Descripción general
Un grupo de nodos es un conjunto de nodos dentro 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
, que tiene el nombre del grupo de nodos como su valor.
Cuando creas un clúster en modo estándar, la cantidad y el tipo de nodos que especificas se usan 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 procesamiento del clúster, con la imagen de nodo predeterminada cos_containerd
y un tipo de máquina de uso general. Puedes especificar una variedad de propiedades para el grupo de nodos, según los requisitos de tu carga de trabajo. Por ejemplo, podrías crear un grupo de nodos en tu clúster con SSD locales, una plataforma de CPU mínima, VMs Spot, una imagen de nodo diferente, diferentes tipos de máquinas o una interfaz de red virtual más eficiente.
Luego, 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 necesitas programar los Pods que requieren más recursos que otros, como más memoria o más espacio en el disco local. Si necesitas más control sobre dónde se programan los Pods, puedes usar taints de nodos.
Puedes crear, actualizar 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 en el grupo de nodos.
Para cambiar el tamaño de los grupos de nodos de un clúster, agrega o quita 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 existentes se pueden actualizar de forma manual o actualizar de forma automática. 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 manera independiente y orientar a grupos de nodos diferentes para implementaciones específicas.
Implementa servicios en grupos de nodos específicos
Cuando defines un servicio, puedes controlar de forma indirecta en qué grupo de nodos se implementará. El grupo de nodos no depende de la configuración del servicio, sino de la configuración del Pod.
Puedes implementar de forma explícita un Pod en un grupo de nodos específico si estableces
nodeSelector
en el manifiesto del Pod. Esto obliga a un Pod a ejecutarse solo en los nodos de ese grupo. Para ver un ejemplo, consulta Implementa un Pod en un grupo de nodos específico.Puedes especificar las solicitudes de recursos para los contenedores. El Pod solo se ejecuta en nodos que cumplan con las solicitudes de recursos. Por ejemplo, si la definición del Pod incluye un contenedor que requiere cuatro CPU, el Service no seleccionará los Pods que se ejecutan en nodos con dos CPU.
Nodos en clústeres multizonales
Si creaste un clúster multizonal, todos los grupos de nodos se replican de forma automática en esas zonas. Cualquier grupo de nodos nuevo se crea de forma automática en esas zonas. Del mismo modo, cualquier proceso de borrado también borra esos grupos de nodos de las zonas adicionales.
Ten en cuenta que, debido a este efecto multiplicativo, esto puede consumir más de la cuota de tu proyecto para una región específica cuando se crean los grupos de nodos.
Borra grupos de nodos
Cuando borras un grupo de nodos, GKE vacía todos los nodos del grupo y, así, borra y reprograma todos los Pods. Para el proceso de vaciado, GKE expulsa los Pods de cada nodo del grupo de nodos. Cada nodo de un grupo de nodos se vacía a través de la expulsión de Pods con un período de finalización ordenado asignado de MAX_POD
.
MAX_POD
es el valor máximo establecido para terminationGracePeriodSeconds
en los Pods programados del nodo, con un límite de una hora.
La configuración de PodDisruptionBudget
no se respeta durante la eliminación del grupo de nodos.
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 requisitos.
Sin embargo, cuando se borra un clúster, GKE no sigue este proceso de finalizar con facilidad los nodos a través de su desvío. Si las cargas de trabajo que se ejecutan en un clúster deben finalizarse de forma correcta, usa kubectl
drain
para limpiarlas antes de borrar el clúster.
Para borrar un grupo de nodos, consulta Borra un grupo de nodos.
¿Qué sigue?
- Obtén más información sobre la arquitectura del clúster en GKE.
- Obtén más información para aprovisionar nodos automáticamente.