Sobes.tech
Middle+

Kokios yra taisyklės, kurios draudžia paleisti tam tikrą mazgo tašką sistemoje?

sobes.tech AI

Atsakymas iš AI

Yra šie pagrindiniai mechanizmai:

  • Taints ir Tolerations (T/T):

    • Taints (užteršimai): taikomi mazgams. Leidžia mazgui "atstumti" podus, kurie neturi atitinkamo leidimo.
    • Tolerations (leidimai): taikomi podams. Leidžia podui būti mazge, kuris turi atitinkamą užteršimą.

Taint efektų tipai:

  • NoSchedule - podas nebus išdėstytas mazge, jei neturi atitinkamo leidimo.

  • PreferNoSchedule - planuotojas stengsis ne išdėstyti podą šiame mazge, bet gali, jei kitų variantų nėra.

  • NoExecute - podas nebus išdėstytas mazge, ir jau veikiantys podai, neturintys atitinkamo leidimo, bus pašalinti.

  • Node Affinity (Mazgų artumas):

    • requiredDuringSchedulingIgnoredDuringExecution: planuotojas privalo išdėstyti podą mazge, kuris atitinka nustatytus artumo kriterijus. Jei tinkamų mazgų nėra, podas liks Pending būsenoje.
    • preferredDuringSchedulingIgnoredDuringExecution: planuotojas stengsis išdėstyti podą mazge, kuris atitinka nustatytus artumo kriterijus. Jei tinkamų mazgų nėra, podas gali būti išdėstytas ir kituose mazguose.
  • Kubelet konfigūracija:

    Galite naudoti kubelet nustatymus, kad apribotumėte tam tikro tipo podus, kurie gali būti paleisti konkrečiame mazge, pvz., per static pods arba manifests. Nors tai mažiau lanksti dinaminio valdymo požiūriu.

# Taint pavyzdys
apiVersion: v1
kind: Node
metadata:
  name: node1
spec:
  taints:
  - key: special
    value: true
    effect: NoSchedule
# Toleration pavyzdys
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 pavyzdys
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