Sobes.tech
Middle+

Ի՞նչ կանոններ կան, որոնք արգելում են որոշակի հանգույցի կետը գործարկել համակարգում։

sobes.tech AI

Պատասխան AI-ից

Կան հիմնական մեխանիզմներ՝

  • Taints և Tolerations (T/T):

    • Taints (լեղենացումներ): կիրառվում են հանգույցների վրա: Դրանք թույլ են տալիս հանգույցին "վռնդել" պոդերին, որոնք չունեն համապատասխան թույլտվություն:
    • Tolerations (թույլտվություններ): կիրառվում են պոդերի վրա: Դրանք թույլ են տալիս պոդին գտնվել հանգույցի վրա, որը ունի համապատասխան լեղենացում:

Taint-ների ազդեցության տեսակներ՝

  • NoSchedule - պոդը չի տեղադրվի հանգույցի վրա, եթե չունի համապատասխան թույլտվություն:

  • PreferNoSchedule - պլանավորողը կփորձի չտեղադրել պոդը այս հանգույցում, բայց կարող է անել դա, եթե այլ տարբերակներ չկան:

  • NoExecute - պոդը չի տեղադրվի հանգույցի վրա, և արդեն աշխատող պոդերը, որոնք չունեն համապատասխան թույլտվություն, կհեռացվեն:

  • Node Affinity (Համապատասխանություն հանգույցների):

    • requiredDuringSchedulingIgnoredDuringExecution: պլանավորողը պարտավոր է տեղադրել պոդը հանգույցի վրա, որը համապատասխանում է նշված պայմաններին:
    • preferredDuringSchedulingIgnoredDuringExecution: պլանավորողը կփորձի տեղադրել պոդը հանգույցի վրա, որը համապատասխանում է նշված պայմաններին:
  • Kubelet Կարգավորումներ:

    Կարող եք օգտագործել kubelet-ի կարգավորումները՝ սահմանափակելու համար այն տիպի պոդերը, որոնք կարող են գործարկել կոնկրետ հանգույցում, օրինակ՝ static pods կամ manifests-ով:

# Taint-ի օրինակ
apiVersion: v1
kind: Node
metadata:
  name: node1
spec:
  taints:
  - key: special
    value: true
    effect: NoSchedule
# 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
# 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