scheduler
作用:scheduler是把待调度的pod通过调度算法和调度策略绑定到某个合适的node上,并把相关信息写入etcd,然后就是kubelet通过api监听到pod事件,之后获取pod清单,下载镜像启动容器。
三要素:
待调度的pod列表
可用的node列表
调度算法
k8s默认调度器基础调度原理分两个阶段:过滤+打分
过滤阶段:
遍历所有的node,筛选出符合条件的node,把这些node加入一个集合。
筛选策略:是通过一系列的过滤器,对每个node进行过滤看其是否符合条件,比如检查磁盘、主机、可用端口、节点标签、CPU和内存资源、服务亲和性等等,筛选所有符合条件的node,然后对他们进行打分。
打分阶段:
对每个node进行打分,打分根据一系列的优选策略,然后找出得分最高的node,把pod调度到这个node上。
打分策略:打分需要检查的项,比如:
资源消耗最少
资源使用率最均衡
含有相关label
等都会被打不同分,然后挑出得分最高的node供pod调度。