Sobes.tech
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 pods o manifests. 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