Sobes.tech
Middle+

Aké sú pravidlá zakazujúce spustenie určitého uzlového bodu v systéme?

sobes.tech AI

Odpoveď od AI

Existujú nasledujúce hlavné mechanizmy:

  • Taints a Tolerations (T/T):

    • Taints (Kontaminácie): Sú aplikované na uzly. Umožňujú uzlu "odmietnuť" pody, ktoré nemajú príslušný toleranciu.
    • Tolerations (Tolerancie): Sú aplikované na pody. Umožňujú podu zostať na uzle, ktorý má príslušnú kontamináciu.

Typy efektov Taint:

  • NoSchedule - pod nebude umiestnený na uzle, ak nemá príslušnú toleranciu.

  • PreferNoSchedule - plánovač sa pokúsi neumiestniť pod na tomto uzle, ale môže to urobiť, ak nie sú iné možnosti.

  • NoExecute - pod nebude umiestnený na uzle a pody, ktoré už bežia na uzle bez príslušnej tolerancie, budú vysunuté.

  • Node Affinity (Súdržnosť uzlov):

    • requiredDuringSchedulingIgnoredDuringExecution: Plánovač je povinný umiestniť pod na uzle, ktorý spĺňa stanovené kritériá súdržnosti. Ak nie sú vhodné uzly, pod zostane v stave Pending.
    • preferredDuringSchedulingIgnoredDuringExecution: Plánovač sa pokúsi umiestniť pod na uzle, ktorý spĺňa stanovené kritériá súdržnosti. Ak nie sú vhodné uzly, pod môže byť umiestnený aj na iných uzloch.
  • Kubelet Configuration:

    Môžete použiť nastavenia kubelet na obmedzenie typov podov, ktoré môžu bežať na konkrétnom uzle, napríklad cez static pods alebo manifests. Hoci je to menej flexibilný prístup k dynamickému riadeniu.

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