我试图找出kubernetes如何计算资源分配?实际上,我无法在源代码中找到它。 在kubernetes官方文档中,可分配的计算公式为[可分配的] = [节点容量]-[保留的Kube]-[保留的系统]-[硬逐出阈值]。您能帮我在github的kubernetes中找到相关的源代码吗?
实际上,我想更改kubernetes中的分配策略,我需要找到相关代码。
欢呼
答案 0 :(得分:2)
有两种选择:
调度程序使用node.Status.Allocatable的值而不是node.Status.Capacity的值来确定节点是否将成为Pod调度的候选者。自定义内容,是绕过时间表并指定您自己的时间表。
第二个选项是更改kubelet使用的值和选项。 details
您可以在节点的kubeletArguments部分中进行设置 通过使用一组配置图 =对(例如, cpu = 200m,内存= 512Mi)。如果该部分还不存在,请添加
从这里开始:
// AllocatableResource returns allocatable resources on a given node.
func (n *NodeInfo) AllocatableResource() Resource {
if n == nil {
return emptyResource
}
return *n.allocatableResource
}
以下是使用该信息的时间表的一部分:
if allocatable.Memory < podRequest.Memory+nodeInfo.RequestedResource().Memory {
predicateFails = append(predicateFails, NewInsufficientResourceError(v1.ResourceMemory, podRequest.Memory, nodeInfo.RequestedResource().Memory, allocatable.Memory))
}