kube-scheduler

187

kube-scheduler is the default scheduler for Kubernetes and runs as part of the control plane.

Stuff you wanna know:

  1. kube-scheduler is designed so that, if you want and need to, you can write your own scheduling component and use that instead.
  2. For every newly created pod or other unscheduled pods, kube-scheduler selects an optimal node for them to run on.
  3. If none of the nodes are suitable, the pod remains unscheduled until the scheduler is able to place it.
  4. Factors that need to be taken into account for scheduling decisions include individual and collective resource requirements, hardware / software / policy constraints, affinity and anti-affinity specifications, data locality, and inter-workload interference.
  5. kube-scheduler selects a node for the pod in a 2-step operation – 1. Filtering, and 2. Scoring. The filtering step finds the set of Nodes where it’s feasible to schedule the Pod. In the scoring step, the scheduler ranks the remaining nodes to choose the most suitable Pod placement.
  6. kube-scheduler assigns the Pod to the Node with the highest ranking. If there is more than one node with equal scores, kube-scheduler selects one of these at random.
  7. You can customize the behavior of the kube-scheduler by writing a configuration file and passing its path as a command line argument.

More stuff:

  1. Kubernetes scheduler
  2. Scheduling, preemption, and eviction