Kubernetes Scheduler之balanced_resource_allocation

2023-07-04 17:57:28 kubernetes scheduler balanced

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)
}

相关文章