
kube-scheduler
The main responsibility of the Kubernetes Scheduler (kube-scheduler) component is scheduling container workloads (Kubernetes Pods) and assigning them to healthy worker nodes that fulfill the criteria required for running a particular workload.
Scheduling is performed in two phases:
- Filtering
- Scoring
In the filtering phase, kube-scheduler determines the set of nodes that are capable of running a given Pod. This includes checking the actual state of nodes and verifying any resource requirements specified by the Pod definition. At this point, if there are no nodes that can run a given Pod, the Pod cannot be scheduled and remains pending. Next, in the scoring step, the scheduler assigns scores for each node based on a set of policies. Then, the Pod is assigned by the scheduler to the node with the highest score.
You can read more about available policies in the official documentation: https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/#kube-scheduler-implementation.
Now, let's take a look at kube-controller-manager.