Sobes.tech
Middle+

Care sunt regulile care interzic lansarea unui anumit punct de nod în sistem?

sobes.tech AI

Răspuns de la AI

Există următoarele mecanisme principale:

  • Taints și Tolerations (T/T):

    • Taints (Etichete de poluare): Se aplică nodurilor. Permite nodului să "respingă" podurile care nu au toleranța corespunzătoare.
    • Tolerations (Toleranțe): Se aplică podurilor. Permite unui pod să fie plasat pe un nod care are o etichetă de poluare corespunzătoare.

    Tipuri de efecte Taint:

    • NoSchedule - Podul nu va fi programat pe nod dacă nu are toleranța corespunzătoare.
    • PreferNoSchedule - Planificatorul va încerca să nu plaseze podul pe acest nod, dar poate face acest lucru dacă nu există alte opțiuni.
    • NoExecute - Podul nu va fi plasat pe nod, iar podurile deja existente pe nod fără toleranța corespunzătoare vor fi eliminate.
  • Node Affinity (Afiliație nod):

    • requiredDuringSchedulingIgnoredDuringExecution: Planificatorul trebuie să plaseze podul pe un nod care îndeplinește criteriile de afinitate. Dacă nu există noduri potrivite, podul va rămâne în Pending.
    • preferredDuringSchedulingIgnoredDuringExecution: Planificatorul va încerca să plaseze podul pe un nod care îndeplinește criteriile de afinitate. Dacă nu există noduri potrivite, podul poate fi plasat pe alte noduri.
  • Configurarea Kubelet:

    Se pot folosi setări ale kubelet pentru a limita tipurile de poduri care pot fi rulate pe un anumit nod, de exemplu, prin static pods sau manifests. Deși aceasta este o abordare mai puțin flexibilă pentru gestionarea dinamică.

# Exemplu Taint
apiVersion: v1
kind: Node
metadata:
  name: node1
spec:
  taints:
  - key: special
    value: true
    effect: NoSchedule
# Exemplu 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
# Exemplu Node Affinity
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