Middle+
Jaká jsou pravidla zakazující spuštění určitého uzlového bodu v systému?
sobes.tech AI
Odpověď od AI
Existují následující hlavní mechanismy:
-
Taints a Tolerations (T/T):
- Taints (Znečišťující štítky): Aplikují se na uzly. Umožňují uzlu "odmítnout" pods, které nemají odpovídající toleranci.
- Tolerations (Tolerantnosti): Aplikují se na pods. Umožňují pods být umístěny na uzlu, který má odpovídající štítek znečištění.
Typy efektů Taint:
NoSchedule- Pod nebude naplánován na uzel, pokud nemá odpovídající toleranci.PreferNoSchedule- Plánovač se pokusí neumisťovat pod na tomto uzlu, ale může to udělat, pokud nejsou jiné možnosti.NoExecute- Pod nebude umístěn na uzel a již běžící pods bez odpovídající toleranci budou odstraněny.
-
Node Affinity (Podobnost uzlů):
requiredDuringSchedulingIgnoredDuringExecution: Plánovač musí umístit pod na uzel, který splňuje kritéria podobnosti. Pokud nejsou vhodné uzly, pod zůstane v stavu Pending.preferredDuringSchedulingIgnoredDuringExecution: Plánovač se pokusí umístit pod na uzel, který splňuje kritéria podobnosti. Pokud nejsou vhodné uzly, pod může být umístěn na jiných uzlech.
-
Konfigurace kubelet:
Lze použít nastavení kubelet k omezení typů podů, které mohou být spuštěny na konkrétním uzlu, například přes
static podsnebomanifests. Ačkoliv je to méně flexibilní pro dynamické řízení.
# Příklad Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Příklad toleranci
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Pří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