Middle+
Какви са правилата, които забраняват стартирането на определена възлова точка в системата?
sobes.tech AI
Отговор от AI
Съществуват следните основни механизми:
-
Taints и Tolerations (T/T):
- Taints (Метки за замърсяване): Прилагат се към възлите. Позволяват на възел да "отхвърли" подове, които нямат съответната толерантност.
- Tolerations (Толеранси): Прилагат се към подове. Позволяват на под да бъде разположен на възел, който има съответната метка за замърсяване.
Видове ефекти на Taint:
NoSchedule- Подът няма да бъде планиран на възел, ако няма съответната толерантност.PreferNoSchedule- Планировчикът ще се опита да не поставя пода на този възел, но може да го направи, ако няма други опции.NoExecute- Подът няма да бъде поставен на възел, и вече работещите подове на възел без съответната толерантност ще бъдат изтласкани.
-
Node Affinity (Афинистика на възлите):
requiredDuringSchedulingIgnoredDuringExecution: Планировчикът задължително трябва да постави пода на възел, който отговаря на критериите за афинистика. Ако няма подходящи възли, подът ще остане в състояние Pending.preferredDuringSchedulingIgnoredDuringExecution: Планировчикът ще се опита да постави пода на възел, който отговаря на критериите за афинистика. Ако няма подходящи възли, подът може да бъде поставен и на други възли.
-
Конфигурация на kubelet:
Може да се използват настройки на kubelet за ограничаване на типовете подове, които могат да се стартират на конкретен възел, например чрез
static podsилиmanifests. Въпреки че това е по-малко гъвкаво за динамично управление.
# Пример за Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Пример за 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
# Пример за 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