Taints y tolerations
Evite que los Pods se programen en nodos específicos mediante taints y permita que determinados Pods los toleren.
Taints y tolerations es una lección gratuita de Kubernetes Basics en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Kubernetes Basics, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Kubernetes Basics incluye 4 lecciones en total.
¿Qué son los taints?
Imagine que tiene nodos especiales en su clúster de Kubernetes, quizá con hardware específico, como GPU, o reservados para determinadas cargas de trabajo. No querría que cualquier Pod se ejecutara en ellos, ¿verdad?
¡Aquí entran en juego los taints! Un taint es una propiedad que se aplica a un nodo y que impide planificar Pods en él, a menos que esos Pods «toleren» explícitamente dicho taint.
Motivos para usar taints
Los taints son muy útiles para gestionar dónde se ejecutan los Pods:
- Nodos dedicados: reserve nodos para equipos o aplicaciones específicos.
- Hardware especial: aísle nodos con GPU o SSD de alto rendimiento para los Pods que los necesiten.
- Mantenimiento: marque un nodo para realizar tareas de mantenimiento e impida temporalmente que se planifiquen nuevos Pods en él.
Cómo funcionan los taints
Considere un taint como una señal de «prohibido el paso» en un nodo. Un Pod solo puede ignorar esta señal si tiene un «permiso» correspondiente llamado toleration.
Un taint consta de una clave, un valor y un efecto. Por ejemplo: key=value:effect.
Cómo entender los efectos de los taints
La parte «effect» de un taint indica a Kubernetes qué debe hacer con los Pods que no lo toleran. Hay tres efectos principales:
NoSchedulePreferNoScheduleNoExecute
Veamos cada uno.
Efecto del taint: NoSchedule
El efecto NoSchedule es el más estricto. Si un nodo tiene un taint con NoSchedule, ningún Pod se planificará en ese nodo a menos que tenga una toleration correspondiente.
Los Pods que ya se estén ejecutando en el nodo NO se ven afectados por un nuevo taint NoSchedule.
Efecto del taint: PreferNoSchedule
PreferNoSchedule es una versión «flexible» de NoSchedule. Kubernetes intentará evitar en la medida de lo posible planificar Pods en un nodo con taint, pero no es un requisito estricto.
Si no hay otros nodos adecuados, un Pod podría planificarse igualmente en un nodo con el taint PreferNoSchedule, incluso sin una toleration.
Efecto del taint: NoExecute
El efecto NoExecute es especial porque afecta a los Pods que *ya están en ejecución*. Si un nodo tiene un taint NoExecute:
- Los Pods sin una toleration correspondiente se *expulsan inmediatamente*.
- Los nuevos Pods sin una toleration correspondiente no se pueden planificar.
Esto se utiliza a menudo para vaciar nodos o gestionar fallos de nodos.
Introducción a las tolerations
Mientras que los taints se aplican a los nodos, las tolerations se aplican a los Pods. La toleration de un Pod permite planificarlo en un nodo que tenga un taint correspondiente.
Sin una toleration correspondiente, un Pod no puede (o prefiere no) planificarse en un nodo con taint.
Tolerations en los manifiestos de Pods
Las tolerations se definen en el manifiesto YAML de un Pod, dentro de la sección spec. Así es como un Pod tolera un taint con key=value:NoSchedule:
apiVersion: v1
kind: Pod
metadata:
name: my-tolerated-pod
spec:
containers:
- name: nginx
image: nginx
tolerations:
- key: "special-purpose"
operator: "Equal"
value: "gpu"
effect: "NoSchedule"Cómo coinciden los taints y las tolerations
Para que un Pod se planifique en un nodo con taint, su toleration debe coincidir con el taint del nodo. La coincidencia incluye:
- Clave: debe ser la misma.
- Valor: debe ser el mismo si
operator: Equal. - Efecto: debe ser el mismo.
- Operador: puede ser
EqualoExists(es decir, cualquier valor para la clave).
Una toleration especial, key: "" operator: Exists, tolera *cualquier* taint.
Comprobación rápida: taints
Un nodo tiene el taint env=production:NoSchedule. ¿Qué configuración del Pod permitiría planificarlo en este nodo?
Resumen: taints y tolerations
¡Ha aprendido sobre los taints y las tolerations!
- Los taints se aplican a los nodos para repeler Pods.
- Las tolerations se aplican a los Pods para permitir que se planifiquen en nodos con taints.
- Los efectos principales de los taints son
NoSchedule,PreferNoScheduleyNoExecute. - Las tolerations deben coincidir con la clave, el valor y el efecto del taint para que un Pod se pueda planificar.
Estas herramientas le proporcionan un control detallado sobre la ubicación de los Pods.
Preguntas frecuentes
¿La lección «Taints y tolerations» es gratis?
Sí — el texto completo de «Taints y tolerations» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Kubernetes Basics, actualiza a CoddyKit PRO. El curso de Kubernetes Basics incluye 4 lecciones en total.
¿Qué aprenderé en «Taints y tolerations»?
Evite que los Pods se programen en nodos específicos mediante taints y permita que determinados Pods los toleren. Practicas Kubernetes Basics con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar Kubernetes Basics?
No se requiere experiencia previa. Kubernetes Basics en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Taints y tolerations»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de Kubernetes Basics?
Sí. Cada lección de Kubernetes Basics incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Solicitudes y límites de recursos
- Selectores y afinidad de nodos
- Taints y tolerations
- Prioridad y preempción de Pods