@@ -28,6 +28,7 @@ import (
28
28
"sigs.k8s.io/descheduler/pkg/descheduler/evictions"
29
29
nodeutil "sigs.k8s.io/descheduler/pkg/descheduler/node"
30
30
podutil "sigs.k8s.io/descheduler/pkg/descheduler/pod"
31
+ "sigs.k8s.io/descheduler/pkg/framework/plugins/nodeutilization/normalizer"
31
32
frameworktypes "sigs.k8s.io/descheduler/pkg/framework/types"
32
33
)
33
34
@@ -123,17 +124,28 @@ func (l *LowNodeUtilization) Balance(ctx context.Context, nodes []*v1.Node) *fra
123
124
}
124
125
125
126
nodesMap , nodesUsageMap , podListMap := getNodeUsageSnapshot (nodes , l .usageClient )
126
- var nodeThresholdsMap map [string ][]api.ResourceThresholds
127
+
128
+ var usage map [string ]api.ResourceThresholds
129
+ var thresholds map [string ][]api.ResourceThresholds
127
130
if l .args .UseDeviationThresholds {
128
- nodeThresholdsMap = getNodeThresholdsFromAverageNodeUsage (nodes , l .usageClient , l .args .Thresholds , l .args .TargetThresholds )
131
+ usage , thresholds = assessNodesUsagesAndRelativeThresholds (
132
+ nodesUsageMap ,
133
+ referencedResourceListForNodesCapacity (nodes ),
134
+ l .args .Thresholds ,
135
+ l .args .TargetThresholds ,
136
+ )
129
137
} else {
130
- nodeThresholdsMap = getStaticNodeThresholds (nodes , l .args .Thresholds , l .args .TargetThresholds )
138
+ usage , thresholds = assessNodesUsagesAndStaticThresholds (
139
+ nodesUsageMap ,
140
+ referencedResourceListForNodesCapacity (nodes ),
141
+ l .args .Thresholds ,
142
+ l .args .TargetThresholds ,
143
+ )
131
144
}
132
- nodesUsageAsNodeThresholdsMap := nodeUsageToResourceThresholds (nodesUsageMap , nodesMap )
133
145
134
146
nodeGroups := classifyNodeUsage (
135
- nodesUsageAsNodeThresholdsMap ,
136
- nodeThresholdsMap ,
147
+ usage ,
148
+ thresholds ,
137
149
[]classifierFnc {
138
150
// underutilization
139
151
func (nodeName string , usage , threshold api.ResourceThresholds ) bool {
@@ -156,7 +168,12 @@ func (l *LowNodeUtilization) Balance(ctx context.Context, nodes []*v1.Node) *fra
156
168
listedNodes := map [string ]struct {}{}
157
169
for i := range nodeGroups {
158
170
for nodeName := range nodeGroups [i ] {
159
- klog .InfoS ("Node is " + category [i ], "node" , klog .KObj (nodesMap [nodeName ]), "usage" , nodesUsageMap [nodeName ], "usagePercentage" , resourceUsagePercentages (nodesUsageMap [nodeName ], nodesMap [nodeName ], true ))
171
+ klog .InfoS (
172
+ fmt .Sprintf ("Node is %x" , category [i ]),
173
+ "node" , klog .KObj (nodesMap [nodeName ]),
174
+ "usage" , nodesUsageMap [nodeName ],
175
+ "usagePercentage" , normalizer .Round (usage [nodeName ]),
176
+ )
160
177
listedNodes [nodeName ] = struct {}{}
161
178
nodeInfos [i ] = append (nodeInfos [i ], NodeInfo {
162
179
NodeUsage : NodeUsage {
@@ -165,15 +182,20 @@ func (l *LowNodeUtilization) Balance(ctx context.Context, nodes []*v1.Node) *fra
165
182
allPods : podListMap [nodeName ],
166
183
},
167
184
thresholds : NodeThresholds {
168
- lowResourceThreshold : resourceThresholdsToNodeUsage (nodeThresholdsMap [nodeName ][0 ], nodesMap [nodeName ]),
169
- highResourceThreshold : resourceThresholdsToNodeUsage (nodeThresholdsMap [nodeName ][1 ], nodesMap [nodeName ]),
185
+ lowResourceThreshold : resourceThresholdsToNodeUsage (thresholds [nodeName ][0 ], nodesMap [nodeName ]),
186
+ highResourceThreshold : resourceThresholdsToNodeUsage (thresholds [nodeName ][1 ], nodesMap [nodeName ]),
170
187
},
171
188
})
172
189
}
173
190
}
174
191
for nodeName := range nodesMap {
175
192
if _ , ok := listedNodes [nodeName ]; ! ok {
176
- klog .InfoS ("Node is appropriately utilized" , "node" , klog .KObj (nodesMap [nodeName ]), "usage" , nodesUsageMap [nodeName ], "usagePercentage" , resourceUsagePercentages (nodesUsageMap [nodeName ], nodesMap [nodeName ], true ))
193
+ klog .InfoS (
194
+ "Node is appropriately utilized" ,
195
+ "node" , klog .KObj (nodesMap [nodeName ]),
196
+ "usage" , nodesUsageMap [nodeName ],
197
+ "usagePercentage" , normalizer .Round (usage [nodeName ]),
198
+ )
177
199
}
178
200
}
179
201
0 commit comments