在Kubernetes中,调度器的角色是为pod寻找合适的节点。因此,在将pod分配到节点后,该节点上有不同的pod,因此这些pod竞争获取资源。因此,对于这种竞争局面,Kubernetes如何分配资源?Kubernetes中有没有计算资源分配的源码?
发布于 2019-03-25 19:59:05
我想您可以看看下面的文章,看看它们是否回答了您的问题
https://jvns.ca/blog/2017/07/27/how-does-the-kubernetes-scheduler-work/
过滤后的节点被认为适合托管Pod,通常情况下,剩余的节点不止一个。Kubernetes对剩余的节点进行优先级排序,以找到Pod的“最佳”节点。优先级排序由一组优先级函数来执行。对于剩余的每个节点,优先级函数会给出一个从0到10的分数,其中10表示“最首选”,0表示“最不首选”。每个优先级函数被一个正数加权,每个节点的最终得分通过将所有加权得分相加来计算。例如,假设有两个优先级函数priorityFunc1和priorityFunc2,分别具有加权因子weight1和weight2,则某些NodeA的最终得分为:
finalScoreNodeA = (weight1 * priorityFunc1) + (weight2 * priorityFunc2)
计算所有节点的得分后,选择得分最高的节点作为Pod的主机。如果有多个节点具有相同的最高分,则从其中随机选择一个节点。
目前Kubernetes调度器提供了一些实用的优先级函数,包括:
LeastRequestedPriority:根据新Pod被调度到节点上时将空闲的节点部分来确定节点的优先级。(换句话说,(capacity -节点上所有Pod的请求之和-正在调度的Pod的请求)/ capacity)。CPU和内存的权重相等。具有最高自由分数的节点是最优选的。请注意,此优先级函数具有在资源消耗方面跨节点传播Pod的效果。
CalculateNodeLabelPriority:首选具有指定标签的节点。
CalculateSpreadPriority:通过最小化同一节点上属于同一服务的Pod数量来扩展Pod。如果节点上存在区域信息,则会调整优先级,以便pods跨区域和节点传播。
CalculateAntiAffinityPriority:通过最小化特定标签具有相同值的节点上属于相同服务的Pod数量来扩展Pod。
https://stackoverflow.com/questions/55336552
复制相似问题