Ի՞նչ է նշանակում '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 քաղաքականությունները օգնում են կանխել կատարողականի անկումը և համակարգի ձախողումները։