Sobes.tech
Middle

Co znamená pojem 'eviction' nebo 'evict' v kontextu DevOps?

sobes.tech AI

Odpověď od AI

V kontextu DevOps, zejména při práci se systémy orchestrací kontejnerů jako Kubernetes, znamená "eviction" (nebo proces "evict") násilné odstranění (smazání) Podu z uzlu.

Obvykle k tomu dochází kvůli nedostatku zdrojů na uzlu, například:

  • Diskový prostor: Uzel je blízko vyčerpání diskového prostoru potřebného pro běh Podů, logů, obrazů kontejnerů atd.
  • Paměť: Systém na uzlu čelí nedostatku operační paměti.

Když uzel dosáhne určitého prahu využití zdrojů (nastaveného v Kubeletu), začne proces evictions, aby zabránil úplnému selhání uzlu a zachoval jeho stabilitu. Při evictions je priorita dána Podům s nižší prioritou (PriorityClass) a těm, které spotřebovávají více zdrojů, překračujícím požadované limity (QoS typu burstable nebo best-effort).

// Příklad manifestu Pod s definovanými zdroji
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 // Příklad použití PriorityClass

Evicted Pod je označen jako Evicted, poté kontrolér (například Deployment) vytvoří novou instanci Podu na jiném uzlu s dostatečnými zdroji.

Řízení prahových hodnot evictions (eviction thresholds) je důležitou součástí udržení stability clusteru. To se konfiguruje pomocí parametrů Kubelet, například:

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

Monitorování využití zdrojů na uzlech a nastavené politiky evictions pomáhají předcházet degradaci výkonu a selhání aplikací.