I have understood how Kubernetes scheduler works. The kubernetes scheduler only create and assign pods, but the actually running pod is the kubelet's job.
How kubelet schedules the containers in the pods? (Handler request from outside). Is it the same thing like linux select/epoll model?
Epoll is a Linux kernel API for linear scalability which allows you to manage huge amounts of parallel connections with small amount of worker processes comparing to classical one-thread per connection. It is hard to compare it to another way of pods distribution.
Kubelet scheduler ensures that pods are only placed on nodes that have sufficient free resources. It ties to spread pods from the same nameset across nodes and tries to balance out the resource utilization of nodes.
Kubelet offers several models of scheduling pods creation:
node affinity/anti-affinity
taints and tolerations
pod affinity/anti-affinity
and custom schedulers
For more detailed information about Kubernetes scheduler, please visit documentation.
I found this blog entry practical for deploying pods.