0
0
Kubernetesdevops~10 mins

Pod priority and preemption in Kubernetes - Step-by-Step Execution

Choose your learning style9 modes available
Process Flow - Pod priority and preemption
Pod submitted
Check node resources
Enough resources?
YesSchedule pod
No
Check pod priorities
Preempt lower priority pods?
YesEvict lower priority pods
No
Pod remains pending
When a pod is submitted, Kubernetes checks if nodes have enough resources. If not, it tries to preempt lower priority pods to make room for higher priority pods.
Execution Sample
Kubernetes
apiVersion: v1
kind: Pod
metadata:
  name: high-priority-pod
spec:
  priorityClassName: high-priority
  containers:
  - name: app
    image: nginx
This pod manifest defines a pod with a high priority class to influence scheduling and preemption.
Process Table
StepActionNode Resources AvailablePod PriorityLower Priority Pods FoundPreemption ActionPod Scheduling Result
1Pod submittedCPU: 2 cores, Memory: 4Gi freeHighN/AN/ACheck resources
2Check node resourcesCPU: 2 cores, Memory: 4Gi freeHighN/AN/ANot enough resources for pod (needs 3 cores)
3Check pod prioritiesCPU: 2 cores, Memory: 4Gi freeHighYes, low-priority pods using 2 coresEvict low-priority podsEvicted pods to free resources
4Schedule podCPU: 3 cores free after evictionHighN/AN/APod scheduled successfully
5EndCPU: 1 core free after pod scheduledHighN/AN/AScheduling complete
💡 Pod scheduled after evicting lower priority pods to free resources
Status Tracker
VariableStartAfter Step 2After Step 3After Step 4Final
Node CPU Free2 cores2 cores3 cores1 core1 core
Pod PriorityN/AHighHighHighHigh
Lower Priority Pods PresentN/AN/AYesNoNo
Pod ScheduledNoNoNoYesYes
Key Moments - 3 Insights
Why does Kubernetes evict pods before scheduling a new pod?
Kubernetes evicts lower priority pods to free resources for higher priority pods, as shown in step 3 where eviction happens to make room.
What happens if no lower priority pods are found during scheduling?
If no lower priority pods exist to evict, the new pod remains pending, as the scheduler cannot free resources (not shown in this trace but implied after step 2).
Does pod priority affect scheduling if resources are already sufficient?
No, if resources are enough, the pod schedules directly without preemption, as in step 1 when resources are checked.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, at which step does Kubernetes evict lower priority pods?
AStep 2
BStep 3
CStep 4
DStep 5
💡 Hint
Check the 'Preemption Action' column in the execution table.
According to the variable tracker, what is the node CPU free after step 4?
A2 cores
B3 cores
C1 core
D4 cores
💡 Hint
Look at the 'Node CPU Free' row under 'After Step 4' in the variable tracker.
If the pod priority was low instead of high, what would happen in the execution table?
APod would remain pending without eviction
BLower priority pods would be evicted
CPod would be scheduled immediately
DScheduler would increase node resources
💡 Hint
Refer to the 'Pod Priority' and 'Preemption Action' columns in the execution table.
Concept Snapshot
Pod priority and preemption in Kubernetes:
- Pods have priority classes (high, low, etc.)
- Scheduler checks node resources before placing pods
- If resources insufficient, scheduler evicts lower priority pods
- Eviction frees resources for higher priority pods
- If no eviction possible, pod stays pending
Full Transcript
When a pod is submitted, Kubernetes checks if nodes have enough resources to run it. If resources are enough, the pod is scheduled immediately. If not, Kubernetes looks for lower priority pods running on nodes. It evicts those lower priority pods to free resources for the higher priority pod. After eviction, the pod is scheduled. If no lower priority pods can be evicted, the pod remains pending until resources free up. This process ensures important pods get resources first.