## [Why do we need Custom Schedulers for Kubernetes?](https://docs.rafay.co/blog/2024/10/10/why-do-we-need-custom-schedulers-for-kubernetes/)

The Kubernetes scheduler is the **brain** that is responsible for assigning pods to nodes based on resource availability, constraints, and affinity/anti-affinity rules. For small to medium-sized clusters running **simple stateless applications** like web services or APIs, the default Kubernetes scheduler is a great fit. The default Kubernetes scheduler manages resource allocation, ensures even distribution of workloads across nodes, and supports features like node affinity, pod anti-affinity, and automatic rescheduling.

The default scheduler is extremely well-suited for long-running applications like web services, APIs, and microservices. Learn more about the [scheduling framework](https://kubernetes.io/docs/concepts/scheduling-eviction/scheduling-framework/).

> Unfortunately, AI/ML workloads have very different requirements that the default scheduler cannot satisfy!
