Middle+
Jakie są zasady zakazujące uruchamiania określonego punktu węzłowego w systemie?
sobes.tech AI
Odpowiedź od AI
Istnieją następujące główne mechanizmy:
-
Taints i Tolerations (T/T):
- Taints (Etykiety skażenia): Nakładane na węzły. Pozwalają węzłowi "odpychać" pod, które nie mają odpowiedniej tolerancji.
- Tolerations (Tolerancje): Nakładane na pod. Pozwalają podowi znajdować się na węźle, który ma odpowiednią etykietę skażenia.
Typy efektów Taint:
NoSchedule- pod nie zostanie umieszczony na węźle, jeśli nie ma odpowiedniej tolerancji.PreferNoSchedule- planista spróbuje nie umieszczać pod na tym węźle, ale może to zrobić, jeśli nie ma innych opcji.NoExecute- pod nie zostanie umieszczony na węźle, a pody już działające na węźle bez odpowiedniej tolerancji zostaną usunięte.
-
Node Affinity (Podobieństwo węzłów):
requiredDuringSchedulingIgnoredDuringExecution: Planista musi umieścić pod na węźle spełniającym kryteria podobieństwa. Jeśli nie ma odpowiednich węzłów, pod pozostanie w stanie Pending.preferredDuringSchedulingIgnoredDuringExecution: Planista spróbuje umieścić pod na węźle spełniającym kryteria podobieństwa. Jeśli nie ma odpowiednich węzłów, pod może być umieszczony na innych.
-
Konfiguracja kubelet:
Można używać ustawień kubelet do ograniczenia typów podów, które mogą być uruchomione na konkretnym węźle, np. przez
static podslubmanifests. Chociaż jest to mniej elastyczne dla zarządzania dynamicznego.
# Przykład Taint
apiVersion: v1
kind: Node
metadata:
name: node1
spec:
taints:
- key: special
value: true
effect: NoSchedule
# Przykład tolerancji
apiVersion: v1
kind: Pod
metadata:
name: my-pod
spec:
tolerations:
- key: special
operator: Equal
value: true
effect: NoSchedule
containers:
- name: my-container
image: nginx
# Przykład podobieństwa węzła
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