Šta znači termin 'eviction' ili 'evict' u kontekstu DevOps?
sobes.tech АИ
Одговор од АИ
U kontekstu DevOps-a, posebno kada radite sa sistemima za orkestraciju kontejnera kao što je Kubernetes, "eviction" (ili proces "evict") znači prinudno uklanjanje (brisanje) Pod-a sa čvora.
Ovo se obično dešava zbog nedostatka resursa na čvoru, kao što su:
- Prostor na disku: Čvor je blizu iscrpljenja prostora na disku potrebnog za rad Pod-ova, logove, slike kontejnera itd.
- Memorija: Sistem na čvoru se suočava sa nedostatkom RAM-a.
Kada čvor dostigne određeni prag korišćenja resursa (podesen u Kubelet-u), započinje proces evictions, kako bi se sprečio potpuni pad čvora i održala njegova stabilnost. Pri izboru za evictions, prioritet imaju Pod-ovi sa nižim prioritetom (PriorityClass) i oni koji koriste više resursa, premašujući postavljene limite (QoS tip burstable ili best-effort).
// Primer manifesta Pod-a sa definisanim resursima
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 // Primer korišćenja PriorityClass
Evicted Pod se označava kao Evicted, nakon čega kontroler (npr. Deployment) kreira novu instancu Pod-a na drugom čvoru sa dovoljnim resursima.
Upravljanje pragovima evictions (eviction thresholds) je važan deo održavanja stabilnosti klastera. Ovo se konfiguriše putem parametara Kubelet-a, kao što su:
--eviction-hard--eviction-soft--eviction-pressure-transition-period
Monitoring korišćenja resursa na čvorovima i konfigurisanih politika evictions pomažu u sprečavanju degradacije performansi i padova aplikacija.