use node infos in try to scale down

This commit is contained in:
Aleksandra Malinowska 2020-02-25 14:35:22 +01:00
parent 572bad61ce
commit ec0ba6b037
2 changed files with 13 additions and 7 deletions

View File

@ -779,6 +779,10 @@ func (sd *ScaleDown) TryToScaleDown(
}
nodesWithoutMaster := filterOutMasters(allNodeInfos, pods)
nodes := make([]*apiv1.Node, len(nodesWithoutMaster))
for i, nodeInfo := range nodesWithoutMaster {
nodes[i] = nodeInfo.Node()
}
candidates := make([]*apiv1.Node, 0)
readinessMap := make(map[string]bool)
@ -792,11 +796,13 @@ func (sd *ScaleDown) TryToScaleDown(
return scaleDownStatus, errors.ToAutoscalerError(errors.CloudProviderError, errCP)
}
scaleDownResourcesLeft := computeScaleDownResourcesLeftLimits(nodesWithoutMaster, resourceLimiter, sd.context.CloudProvider, currentTime)
scaleDownResourcesLeft := computeScaleDownResourcesLeftLimits(nodes, resourceLimiter, sd.context.CloudProvider, currentTime)
nodeGroupSize := utils.GetNodeGroupSizeMap(sd.context.CloudProvider)
resourcesWithLimits := resourceLimiter.GetResources()
for _, node := range nodesWithoutMaster {
for _, nodeInfo := range nodesWithoutMaster {
node := nodeInfo.Node()
unneededSince, found := sd.unneededNodes[node.Name]
if !found {
// Node is not unneeded.
@ -905,7 +911,7 @@ func (sd *ScaleDown) TryToScaleDown(
// We look for only 1 node so new hints may be incomplete.
nodesToRemove, unremovable, _, err := simulator.FindNodesToRemove(
candidates,
nodesWithoutMaster,
nodes,
pods,
sd.context.ListerRegistry,
sd.context.ClusterSnapshot,
@ -1340,8 +1346,8 @@ const (
apiServerLabelValue = "kube-apiserver"
)
func filterOutMasters(nodeInfos []*schedulernodeinfo.NodeInfo, pods []*apiv1.Pod) []*apiv1.Node {
result := make([]*apiv1.Node, 0, len(nodeInfos))
func filterOutMasters(nodeInfos []*schedulernodeinfo.NodeInfo, pods []*apiv1.Pod) []*schedulernodeinfo.NodeInfo {
result := make([]*schedulernodeinfo.NodeInfo, 0, len(nodeInfos))
for _, nodeInfo := range nodeInfos {
found := false
for _, pod := range nodeInfo.Pods() {
@ -1351,7 +1357,7 @@ func filterOutMasters(nodeInfos []*schedulernodeinfo.NodeInfo, pods []*apiv1.Pod
}
}
if !found {
result = append(result, nodeInfo.Node())
result = append(result, nodeInfo)
}
}
return result

View File

@ -1526,7 +1526,7 @@ func TestFilterOutMasters(t *testing.T) {
withoutMastersNames := make([]string, len(withoutMasters))
for i, n := range withoutMasters {
withoutMastersNames[i] = n.Name
withoutMastersNames[i] = n.Node().Name
}
assertEqualSet(t, []string{"n1", "n2", "n4", "n5", "n6"}, withoutMastersNames)
}