Kubernetes Scheduling
Kubernetes scheduling is the process by which the scheduler assigns pods to nodes based on resource requirements, constraints, affinities, taints, and priorities. Understanding scheduling enables workload placement decisions that balance performance, cost, and availability.
itCloud native tools and technologies | OpenSkills.info
Recommended first:kubernetes-fundamentals
Intro
Kubernetes Scheduling
Scheduling is the matchmaking at the heart of Kubernetes: deciding which node each Pod runs on. Most of the time it's invisible — Pods land somewhere sensible and nobody thinks about it. It becomes visible exactly when it matters: Pods stuck Pending, workloads packed onto the wrong hardware, one noisy neighbor starving a node, or an eviction wave at the worst possible moment. Understanding scheduling turns those from mysteries into design decisions.
The mental model: the kube-scheduler runs a continuous auction. Every Pod without a node comes up for placement; every eligible node is scored; the best-scoring node wins the Pod. Your job is not to place Pods — it's to shape the auction with constraints: what a Pod requires, what it prefers, what nodes repel, and what happens when resources run out.
Continue the course
This section is part of the paid course.
See pricing to subscribe, or log in if you already have access.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://kubernetes.io/docs/concepts/scheduling-eviction/
Supports
- Section scope — scheduling (placement) and eviction (termination under contention) as two sides of one concern
- https://kubernetes.io/docs/concepts/scheduling-eviction/kube-scheduler/
Supports
- Two-phase operation — filtering to feasible nodes, scoring to select the winner, then binding
- Pods without feasible nodes remain unscheduled (Pending) with recorded reasons
- https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
Supports
- Requests as scheduling currency; limits as runtime enforcement (CPU throttling, memory OOM)
- Scheduling against allocatable capacity by summed requests, not actual utilization
- https://kubernetes.io/docs/concepts/workloads/pods/pod-qos/
Supports
- QoS classes Guaranteed/Burstable/BestEffort derived from requests and limits
- https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
Supports
- nodeSelector; node affinity required/preferred rules; pod affinity/anti-affinity; topologyKey semantics
- IgnoredDuringExecution meaning; anti-affinity cost considerations
- https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/
Supports
- Taint effects NoSchedule/PreferNoSchedule/NoExecute; tolerationSeconds
- Node-condition taints added automatically (not-ready, unreachable)
- Dedicated node patterns
- https://kubernetes.io/docs/concepts/scheduling-eviction/topology-spread-constraints/
Supports
- maxSkew, topologyKey, whenUnsatisfiable semantics for even distribution across domains
- https://kubernetes.io/docs/concepts/scheduling-eviction/pod-priority-preemption/
Supports
- PriorityClass, preemption of lower-priority Pods, preemptionPolicy Never, PDB best-effort respect
- https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/
Supports
- Kubelet-initiated eviction under memory/disk/PID pressure; ordering by usage vs request and priority; QoS implications
- https://kubernetes.io/docs/concepts/scheduling-eviction/api-eviction/
Supports
- API-initiated eviction (drain) respecting PodDisruptionBudgets
- https://kubernetes.io/docs/concepts/workloads/pods/disruptions/
Supports
- Voluntary vs involuntary disruptions; PodDisruptionBudget minAvailable/maxUnavailable
- https://kubernetes.io/docs/concepts/scheduling-eviction/dynamic-resource-allocation/
Supports
- Dynamic Resource Allocation for claiming specialized devices (e.g. GPUs)
