Middle+
Kokios yra taisyklės, kurios draudžia paleisti tam tikrą mazgo tašką sistemoje?
sobes.tech AI
Atsakymas iš AI
Yra šie pagrindiniai mechanizmai:
-
Taints ir Tolerations (T/T):
- Taints (užteršimai): taikomi mazgams. Leidžia mazgui "atstumti" podus, kurie neturi atitinkamo leidimo.
- Tolerations (leidimai): taikomi podams. Leidžia podui būti mazge, kuris turi atitinkamą užteršimą.
Taint efektų tipai:
-
NoSchedule- podas nebus išdėstytas mazge, jei neturi atitinkamo leidimo. -
PreferNoSchedule- planuotojas stengsis ne išdėstyti podą šiame mazge, bet gali, jei kitų variantų nėra. -
NoExecute- podas nebus išdėstytas mazge, ir jau veikiantys podai, neturintys atitinkamo leidimo, bus pašalinti. -
Node Affinity (Mazgų artumas):
requiredDuringSchedulingIgnoredDuringExecution: planuotojas privalo išdėstyti podą mazge, kuris atitinka nustatytus artumo kriterijus. Jei tinkamų mazgų nėra, podas liks Pending būsenoje.preferredDuringSchedulingIgnoredDuringExecution: planuotojas stengsis išdėstyti podą mazge, kuris atitinka nustatytus artumo kriterijus. Jei tinkamų mazgų nėra, podas gali būti išdėstytas ir kituose mazguose.
-
Kubelet konfigūracija:
Galite naudoti kubelet nustatymus, kad apribotumėte tam tikro tipo podus, kurie gali būti paleisti konkrečiame mazge, pvz., per
static podsarbamanifests. Nors tai mažiau lanksti dinaminio valdymo požiūriu.
# Taint pavyzdys
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Toleration pavyzdys
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Node Affinity pavyzdys
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