Sobes.tech
Middle

Čo znamená pojem 'eviction' alebo 'evict' v kontexte DevOps?

sobes.tech AI

Odpoveď od AI

V kontexte DevOps, najmä pri práci so systémami orchestrácie kontajnerov ako Kubernetes, znamená "eviction" (alebo proces "evict") nútené odstránenie (vymazanie) Podu z uzla.

Toto sa zvyčajne deje kvôli nedostatku zdrojov na uzle, ako sú:

  • Miesto na disku: Uzel je blízko vyčerpania miesta na disku potrebného pre Pod-ové, logy, obrázky kontajnerov atď.
  • Pamäť: Systém na uzle čelí nedostatku RAM.

Keď uzol dosiahne určitý prah využitia zdrojov (nastavený v Kubelet), začína proces evictions, aby sa predišlo úplnému zlyhaniu uzla a zachovala sa jeho stabilita. Pri evictions sa dáva priorita Pod-om s nižším priorítom (PriorityClass) a tým, ktoré spotrebúvajú viac zdrojov, prekračujúc stanovené limity (QoS typu burstable alebo best-effort).

// Príklad manifestu Pod s definovanými zdrojmi
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 // Príklad použitia PriorityClass

Evicted Pod je označený ako Evicted, a následne kontrolér (napríklad, Deployment) vytvorí novú inštanciu Podu na inom uzle s dostatočnými zdrojmi.

Riadenie prahových hodnôt evictions (eviction thresholds) je dôležitou súčasťou udržiavania stability klastru. Toto sa konfiguruje pomocou parametrov Kubelet, ako sú:

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

Monitorovanie využitia zdrojov na uzloch a nastavené politiky evictions pomáhajú predchádzať znižovaniu výkonu a zlyhaniam aplikácií.