Sobes.tech
Middle

Ի՞նչ է նշանակում 'eviction' կամ 'evict' տերմինը DevOps-ի համատեքստում։

sobes.tech AI

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

DevOps կոնտեքստում, հատկապես երբ աշխատում եք Kubernetes-ի նման կոնտեյներների օրգանիզացիայի համակարգերով, "eviction" (կամ "evict" գործընթացը) նշանակում է ուժեղացված Pod- ի հեռացում (ջնջում) հանգույցից:

Սա սովորաբար տեղի է ունենում ռեսուրսների պակասի պատճառով հանգույցում, ինչպիսիք են՝

  • Դիսկի տարածք: Հանգույցը մոտ է դիսկի տարածքի սպառմանը, որը անհրաժեշտ է Pod-ների, լոգների, կոնտեյներների պատկերների և այլնի համար:
  • Հիշողություն: Հանգույցի համակարգը բախվում է RAM-ի պակասի:

Երբ հանգույցը հասնում է որոշակի օգտագործման շեմին (այն կարգավորվում է Kubelet-ում), սկսվում է eviction գործընթացը՝ կանխելու հանգույցի ամբողջական ձախողումը և պահելու նրա կայունությունը: Eviction-ի ժամանակ առաջնահերթություն են ունենում ցածր առաջնահերթության Pod-երը (PriorityClass) և այնպիսիք, որոնք օգտագործում են ավելի շատ ռեսուրսներ և գերազանցում են սահմանված սահմանները (QoS տեսակի burstable կամ best-effort):

// Նմուշ Pod մանიფեստ՝ սահմանված ռեսուրսներով
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: nginx
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  priorityClassName: high-priority // PriorityClass-ի օգտագործման օրինակ

Եվիկտացված Pod-ը նշվում է որպես Evicted, և հետո վերահսկիչը (օրինակ, Deployment) ստեղծում է նոր օրինակ Pod- ի՝ այլ հանգույցում՝ բավարար ռեսուրսներով:

Eviction սահմանները կառավարելը (eviction thresholds) կարևոր է հանգույցների կայունությունը պահպանելու համար: Դա կարգավորվում է Kubelet պարամետրերով, օրինակ՝

  • --eviction-hard
  • --eviction-soft
  • --eviction-pressure-transition-period

Ռեսուրսների օգտագործման մոնիտորինգը և կարգավորած eviction քաղաքականությունները օգնում են կանխել կատարողականի անկումը և համակարգի ձախողումները։