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 podssaumanifests. 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