Skip to content

Commit f868d8e

Browse files
authored
Merge pull request kubernetes#3604 from DataDog/gce-comparator
Ignore topology.gke.io/zone when comparing groups
2 parents 4c52410 + bfd6fe7 commit f868d8e

File tree

2 files changed

+44
-0
lines changed

2 files changed

+44
-0
lines changed

cluster-autoscaler/main.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -309,6 +309,8 @@ func buildAutoscaler() (core.Autoscaler, error) {
309309
nodeInfoComparatorBuilder = nodegroupset.CreateAzureNodeInfoComparator
310310
} else if autoscalingOptions.CloudProviderName == cloudprovider.AwsProviderName {
311311
nodeInfoComparatorBuilder = nodegroupset.CreateAwsNodeInfoComparator
312+
} else if autoscalingOptions.CloudProviderName == cloudprovider.GceProviderName {
313+
nodeInfoComparatorBuilder = nodegroupset.CreateGceNodeInfoComparator
312314
}
313315

314316
opts.Processors.NodeGroupSetProcessor = &nodegroupset.BalancingNodeGroupSetProcessor{
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
/*
2+
Copyright 2019 The Kubernetes Authors.
3+
4+
Licensed under the Apache License, Version 2.0 (the "License");
5+
you may not use this file except in compliance with the License.
6+
You may obtain a copy of the License at
7+
8+
http://www.apache.org/licenses/LICENSE-2.0
9+
10+
Unless required by applicable law or agreed to in writing, software
11+
distributed under the License is distributed on an "AS IS" BASIS,
12+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
See the License for the specific language governing permissions and
14+
limitations under the License.
15+
*/
16+
17+
package nodegroupset
18+
19+
import (
20+
schedulerframework "k8s.io/kubernetes/pkg/scheduler/framework/v1alpha1"
21+
)
22+
23+
// CreateGceNodeInfoComparator returns a comparator that checks if two nodes should be considered
24+
// part of the same NodeGroupSet. This is true if they match usual conditions checked by IsCloudProviderNodeInfoSimilar,
25+
// even if they have different GCE-specific labels.
26+
func CreateGceNodeInfoComparator(extraIgnoredLabels []string) NodeInfoComparator {
27+
gceIgnoredLabels := map[string]bool{
28+
"topology.gke.io/zone": true,
29+
}
30+
31+
for k, v := range BasicIgnoredLabels {
32+
gceIgnoredLabels[k] = v
33+
}
34+
35+
for _, k := range extraIgnoredLabels {
36+
gceIgnoredLabels[k] = true
37+
}
38+
39+
return func(n1, n2 *schedulerframework.NodeInfo) bool {
40+
return IsCloudProviderNodeInfoSimilar(n1, n2, gceIgnoredLabels)
41+
}
42+
}

0 commit comments

Comments
 (0)