Middle+
Aké sú pravidlá zakazujúce spustenie určitého uzlového bodu v systéme?
sobes.tech AI
Odpoveď od AI
Existujú nasledujúce hlavné mechanizmy:
-
Taints a Tolerations (T/T):
- Taints (Kontaminácie): Sú aplikované na uzly. Umožňujú uzlu "odmietnuť" pody, ktoré nemajú príslušný toleranciu.
- Tolerations (Tolerancie): Sú aplikované na pody. Umožňujú podu zostať na uzle, ktorý má príslušnú kontamináciu.
Typy efektov Taint:
-
NoSchedule- pod nebude umiestnený na uzle, ak nemá príslušnú toleranciu. -
PreferNoSchedule- plánovač sa pokúsi neumiestniť pod na tomto uzle, ale môže to urobiť, ak nie sú iné možnosti. -
NoExecute- pod nebude umiestnený na uzle a pody, ktoré už bežia na uzle bez príslušnej tolerancie, budú vysunuté. -
Node Affinity (Súdržnosť uzlov):
requiredDuringSchedulingIgnoredDuringExecution: Plánovač je povinný umiestniť pod na uzle, ktorý spĺňa stanovené kritériá súdržnosti. Ak nie sú vhodné uzly, pod zostane v stave Pending.preferredDuringSchedulingIgnoredDuringExecution: Plánovač sa pokúsi umiestniť pod na uzle, ktorý spĺňa stanovené kritériá súdržnosti. Ak nie sú vhodné uzly, pod môže byť umiestnený aj na iných uzloch.
-
Kubelet Configuration:
Môžete použiť nastavenia kubelet na obmedzenie typov podov, ktoré môžu bežať na konkrétnom uzle, napríklad cez
static podsalebomanifests. Hoci je to menej flexibilný prístup k dynamickému riadeniu.
# Príklad Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Príklad 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
# Príklad 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