scheduler的功能不多,但逻辑比较复杂,里面有很多考虑的因素,总结下来大致有如下
几点:
Leader选主,确保集群中只有一个scheduler在工作,其它只是高可用备份实例。
通过endpoint:kube-scheduler作为仲裁资源。
Node筛选,根据设置的条件、资源要求等,匹配出所有满足分配的Node结点。
最优Node选择。在所有满足条件的Node中,根据定义好的规则来打分,取分数
最高的。如果有相同分数的,则采用轮询方式。
为了响应高优先级的资源分配,增加了抢占功能。scheduler有权删除一些低优先
级的Pod,以释放资源给高优先级的Pod来使用。
功能说明
代码看下来比较困难,下面将分几个场景来描述scheduler工作的过程:
1、环境说明(假设3台机器,分别是8C16G)
场景一:资源分配——最基本的功能
2、先分配一个请求2C4G的Pod:A
场景二:机器负载均衡——评分机制
3、再分配一个请求2C4G的Pod:B(尽管node1上还有空闲资源可分配B,但node2和
node3空闲资源更多,打分更高,所以分配到了node2<选择node2还是node3,是由
评论