Scheduler decides which pods goes oon to which node. Kubelet places the pod onto the node. The scheduler looks onto each node and decides the best node for the pod.
First it filters the node based on cpu and ram usage. Those who do not meet the requirement are discarded.
Secondly, it ranks the nodes from 0 to 10 based on a priorty function. The more the available resources on the node, higher the rank of the node.
S