1. 深入理解Pod调度
在前面的章节我们已经知道在Kubernetes中使用kube-scheduler进行Pod调度,它的目标是将Pod绑定到对应的Node上,经过一系列的条件和算法尽可能的让每个Pod都满意。kube-scheduler是Kubernetes默认的调度器。
kube-scheduler的代码位于GitHub
可以将代码克隆到本地方便查看
[root@linux-node1 ~]# git clone --depth 1 https://github.com/kubernetes/kubernetes.git
在algorithm下有调度算法,调度算法分为两个阶段:Predicates和priorities,首先对Node进行过滤看哪些Node符合调度要求,然后在符合调度要求的Node上进行优先级计算,判断调度到哪个Node最合适。
[root@linux-node1 algorithm]# pwd
/root/kubernetes/pkg/scheduler/algorithm
[root@linux-node1 algorithm]# ls -l
total 20
-rw-r--r-- 1 root root 1256 Dec 17 22:52 BUILD
-rw-r--r-- 1 root root 735 Dec 17 22:52 doc.go
drwxr-xr-x 2 root root 276 Dec 17 22:52 predicates
drwxr-xr-x 3 root root 4096 Dec 17 22:52 priorities
-rw-r--r-- 1 root root 3278 Dec 17 22:52 scheduler_interface.go
-rw-r--r-- 1 root root 3383 Dec 17 22:52 types.go
官方文档详细的介绍了所有的步骤:https://kubernetes.io/docs/concepts/scheduling/kube-scheduler/
设置调度器
[root@linux-node1 ~]# kubectl get pod kube-proxy-5wbtf -n kube-system -o yaml | grep schedulerName
schedulerName: default-scheduler