⭐ DNS Pods Should Evict Batch Jobs
When cluster is full, which pods get evicted? Priority Classes define importance. Critical pods survive. Batch jobs go first.
📝 Define Priority Classes
apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: critical value: 1000000000 globalDefault: false description: "Critical system pods that must never be evicted" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: high value: 1000000 globalDefault: false description: "High priority user workloads" --- apiVersion: scheduling.k8s.io/v1 kind: PriorityClass metadata: name: low value: 1000 globalDefault: true # Default for all pods without priority description: "Low priority batch jobs" # System priorities (already exist): # system-cluster-critical (2B) # system-node-critical (2B)
🎯 Using Priority Classes
apiVersion: v1
kind: Pod
metadata:
name: critical-dns
spec:
priorityClassName: critical # Never evicted
containers:
- name: dns
image: coredns
---
apiVersion: batch/v1
kind: Job
metadata:
name: data-processing
spec:
template:
spec:
priorityClassName: low # Will be evicted first
containers:
- name: processor
image: processor:latest
restartPolicy: Never
💡 Eviction Order (Lowest to Highest)
- Batch jobs (priority: 1000) → evicted first
- User workloads (priority: 1000000)
- Critical system (priority: 1000000000)
- DaemonSet pods (never evicted)
- Static pods (never evicted)
“Node went under pressure. Batch jobs got evicted first. DNS and API servers stayed up. Cluster stayed healthy. Priority classes saved production.”
