En esta página, se explica cómo funcionan los grupos de nodos en Google Kubernetes Engine (GKE).
Si quieres obtener información sobre cómo administrar grupos de nodos, 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, la cantidad y el tipo de nodos que especificas se usan para crear el primer grupo de nodos del clúster. Después, puedes agregar grupos de nodos personalizados adicionales de tamaños y tipos diferentes a tu clúster. Todos los nodos en un grupo de nodos dado son idénticos unos a otros.
Por ejemplo, podrías crear un grupo de nodos en tu clúster con SSD locales, una plataforma de CPU mínima, VM puntuales, una imagen de nodo específica, diferentes tipos de máquinas o una interfaz de red virtual más eficiente.
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 quieres controlar 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 en 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, pero sí 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 o regionales
Si creaste un clúster multizonal o regional, 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.
- Aprende a agregar y administrar grupos de nodos.
- Aprende a aprovisionar nodos automáticamente.