Middle+
¿Cuáles son las reglas que prohíben el lanzamiento de un punto de nodo específico en el sistema?
sobes.tech AI
Respuesta de la IA
Existen los siguientes mecanismos principales:
-
Taints y Tolerations (T/T):
- Taints (Etiquetas de contaminación): Se aplican a los nodos. Permiten que un nodo "repela" los pods que no tienen la tolerancia correspondiente.
- Tolerations (Tolerancias): Se aplican a los pods. Permiten que un pod esté en un nodo que tiene una etiqueta de contaminación correspondiente.
Tipos de efectos de Taint:
NoSchedule- El pod no será programado en el nodo si no tiene la tolerancia correspondiente.PreferNoSchedule- El planificador intentará no programar el pod en este nodo, pero puede hacerlo si no hay otras opciones.NoExecute- El pod no será programado en el nodo, y los pods que ya están en el nodo sin la tolerancia correspondiente serán desplazados.
-
Afinidad de Nodo (Node Affinity):
requiredDuringSchedulingIgnoredDuringExecution: El planificador debe colocar el pod en un nodo que cumple con los criterios de afinidad. Si no hay nodos adecuados, el pod permanecerá en estado Pending.preferredDuringSchedulingIgnoredDuringExecution: El planificador intentará colocar el pod en un nodo que cumple con los criterios de afinidad. Si no hay nodos adecuados, el pod puede ser colocado en otros nodos.
-
Configuración de Kubelet:
Se pueden usar configuraciones de kubelet para limitar los tipos de pods que pueden ejecutarse en un nodo específico, por ejemplo, mediante
static podsomanifests. Aunque esto es menos flexible para la gestión dinámica.
# Ejemplo de Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Ejemplo de Toleration
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Ejemplo de Afinidad de Nodo
apiVersion: v1
kind: Pod
metadata:
name: my-pod-with-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- node1
- node2
containers:
- name: my-container
image: nginx