Kubernetes scheduling is the brain of the cluster, deciding which node runs each Pod. In this post, I explore advanced scheduling mechanisms in Kubernetes. I start with how the default scheduler works under the hood, then dive into the scheduler-plugins project for extending its capabilities. I review custom schedulers and plugins in the ecosystem that focus on cost savings, SLA optimization, and performance tuning. Finally, I look at future trends in Kubernetes scheduling, from AI-driven algorithms to multi-cluster and energy-aware schedulers. This post brings together the key ideas from the full series I wrote on Kubernetes scheduling.
Posts for: #Scheduler-Plugins
Kubernetes Scheduling: Future Trends
The Kubernetes scheduler is the brain of the cluster, deciding which node runs each Pod. This is the final post in a series where I explore advanced scheduling mechanisms in Kubernetes. In this one, I look ahead at emerging trends and research directions that could shape the future of Kubernetes scheduling. I discuss how new heuristics and processing architectures, AI and machine learning could drive smarter placement decisions, how multi-cluster and federated schedulers might support global workloads, and how energy-aware scheduling could make Kubernetes more sustainable. I also explore upcoming ideas like dynamic scheduler profiles, carbon-aware policies, and new architectures for resilience and scalability. From smarter algorithms to environmental impact, Kubernetes scheduling is evolving into a platform for innovation—and the road ahead looks promising.
Kubernetes Scheduling: community schedulers in the ecosystem
The Kubernetes scheduler is the brain of the cluster, deciding which node runs each Pod. This is the fourth post in a series where I explore advanced scheduling mechanisms in Kubernetes. In this one, I give a broad overview of community-driven and vendor-supported custom schedulers built on top of Kubernetes. I focus on how these schedulers and plugins target specific goals like cost savings, SLA optimization, and performance tuning. I cover batch and ML-focused schedulers like Volcano, YuniKorn, and Koordinator, as well as research-driven systems like Poseidon/Firmament. I also look at cost-optimization strategies using bin-packing, spot instances, and descheduling, along with SLA-driven and topology-aware scheduling techniques. Finally, I reflect on the balance between community projects and vendor platforms, and how Kubernetes’s extensibility allows users to tailor scheduling to their workload and infrastructure needs.
Kubernetes Scheduling: the scheduler-plugins project
The Kubernetes scheduler is the brain of the cluster, deciding which node runs each Pod. This is the third post in a series where I explore advanced scheduling mechanisms in Kubernetes. In this one, I focus on the scheduler-plugins project by SIG Scheduling. I explain how this project extends the Kubernetes Scheduling Framework with a collection of out-of-tree plugins that enable advanced behaviors like gang scheduling, NUMA-aware placement, load-aware scoring, and more. I walk through key plugins such as Capacity Scheduling, Coscheduling, Trimaran, and Network-Aware Scheduling, and show how they solve real-world scheduling problems. I also cover how to integrate these plugins into your cluster using a custom scheduler or as a secondary scheduler, and discuss the tradeoffs of each approach.
Kubernetes Scheduling: the scheduling framework
The Kubernetes scheduler is the brain of the cluster, deciding which node runs each Pod. This is the second post in a series where I explore advanced scheduling mechanisms in Kubernetes. In this one, I give an overview of the current state of the Kubernetes scheduling framework. I explain how Kubernetes scheduling works as a batch-oriented process that handles one Pod at a time. I walk through the evolution from the older predicates and priorities model to the modern Scheduling Framework, where each step in the scheduling cycle is an extension point for plugins. I also cover extenders, PreEnqueue plugins, and SchedulingGates, which enable more flexible and complex scheduling workflows. Finally, I highlight projects like Kueue and the Multiarch Tuning Operator that build on these features to support AI, HPC, and multi-architecture workloads.