Kubernetes Scheduler之balanced_resource_allocation
1 Overview
balanced_resource_allocation
是 Kubernetes 调度算法的其中一种。balanced_resource_allocation
会计算的是 CPU 和 Memory 与 Allocable 资源量的分数,并且求出他们的方差 Variance,终会将 Pod 调度到前述方差更小的节点 Node 上。
算法是参考 Wei Huang et al. An Energy Efficient Virtual Machine Placement Algorithm with Balanced Resource Utilization 文章来设计的。
2 代码走读
先理解一个辅助方法 fractionOfCapacity
。这是用来计算请求的资源 requested
和实际资源量 capacity
的比例的方法。显然,当 capacity
是0,作为分母的 capacity
是不能为0的,所以统一返回值为1。否则就是计算 requested/capacity
的比例了。
func fractionOfCapacity(requested, capacity int64) float64 {
if capacity == {
return 1
}
return float64(requested) / float64(capacity)
}
相关文章