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