Sobes.tech
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 pods lub manifests. 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