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