Kubernetes中的资源分配:如何安排pod?

问题描述 投票:0回答:1

在Kubernetes中,调度程序的作用是为pod寻找合适的节点。因此,在将pod分配到节点后,该节点上有不同的pod,以便这些pod竞争获取资源。因此,对于这种竞争形势,Kubernetes如何分配资源? Kubernetes中是否有任何源代码用于计算资源分配?

kubernetes scheduling
1个回答
2
投票

我想你可以看看下面的文章,看看是否能回答你的问题

https://github.com/eBay/Kubernetes/blob/master/docs/devel/scheduler_algorithm.md

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调度到节点上,则根据节点的分数对节点进行优先级排序。 (换句话说,(容量 - 节点上已有的所有Pod的请求总和 - 正在调度的Pod的请求)/容量)。 CPU和内存的权重相等。具有最高游离分数的节点是最优选的。请注意,此优先级函数具有在资源消耗方面跨节点传播Pod的效果。

CalculateNodeLabelPriority:首选具有指定标签的节点。

BalancedResourceAllocation:此优先级函数尝试将Pod放在节点上,以便在部署Pod后平衡CPU和内存利用率。

CalculateSpreadPriority:通过最小化同一节点上属于同一服务的Pod数来传播Pod。如果节点上存在区域信息,则将调整优先级,以便将pod分布在区域和节点上。

CalculateAntiAffinityPriority:通过最小化特定标签具有相同值的节点上属于同一服务的Pod的数量来传播Pod。

© www.soinside.com 2019 - 2024. All rights reserved.