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