https://drive.google.com/file/d/1lnSO1RKmS6n6JtSRh9jsYmmg2EbxfWrH/view?usp=sharing
# mission-critical-priority-class.yaml
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
meta
name: mission-critical-apps
value: 1000000 # β Higher = more important
preemptionPolicy: Never # β Key setting!
globalDefault: false
description: "For mission-critical apps"
π Key Fields:
value: Priority score (1 to 1,000,000,000). Higher = scheduled first.preemptionPolicy:
PreemptLowerPriority(default): Evict lower-priority Pods to make roomNever: Donβt evict β just wait in queue (your example)globalDefault: false: Donβt apply to Pods withoutpriorityClassName
π‘ Default Critical Classes (built into Kubernetes):
system-cluster-criticalβvalue: 2000000000(CoreDNS, CNI, Metrics Server)system-node-criticalβvalue: 2000001000(etcd, kubelet, API server)
# mission-critical-pod.yaml
apiVersion: v1
kind: Pod
meta
name: topgun
labels:
app: topgun
env: prod
spec:
containers:
- name: boxone
image: nginx
imagePullPolicy: IfNotPresent
priorityClassName: mission-critical-apps # β Links to PriorityClass
β This Pod will:
- Be placed ahead of lower-priority Pods in scheduling queue
- NOT preempt others (because
preemptionPolicy: Never)- Wait indefinitely if no resources are available
| Scenario | Behavior |
|---|---|
| Resources available | High-priority Pod schedules immediately |
No resources, preemptionPolicy: PreemptLowerPriority |
Scheduler evicts lowest-priority Pods to free space |
No resources, preemptionPolicy: Never |
Pod waits in queue β no eviction |
| All Pods have same priority | First-come, first-served |
β οΈ Preemption is a last resort β scheduler tries to find space without eviction first.
β Assumption: Your k3s cluster has limited CPU/memory (or weβll simulate scarcity).
# Save as mission-critical-priority-class.yaml
cat <<EOF | kubectl apply -f -
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
meta
name: mission-critical-apps
value: 1000000
preemptionPolicy: PreemptLowerPriority # β Changed to test preemption!
globalDefault: false
description: "For mission-critical apps"
EOF
π‘ We set preemptionPolicy: PreemptLowerPriority to see eviction in action.