Sobes.tech
Middle

Š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.