Kubernetes调度优化--predicates短路

 

kube-scheduler在选择scheduling过程中会进行两个步骤:Predicates(判定)和Priorities(优先级)。默认kube-scheduler需要先对所有node进行Predicate检查再计算Priority,而Predicate又需要检查所有node所有states,比如cpu/memory/port/affinity等等,是一个非常耗时的操作。美团的同学提供过一个参考数据,在规模近3000台的1.6版本的集群上,一次Pod的调度耗时在5s左右。之后也是美团的同学提供一个局部最优解的思路,即如果匹配好需要的node就提前短路Predicates,同样在他们的环境里,scheduling性能比优化前提升了400%以上。

References

https://github.com/kubernetes/kubernetes/pull/56926/

https://zhuanlan.zhihu.com/p/33470869

https://tech.meituan.com/2019/08/22/kubernetes-cluster-management-practice.html