From 76894dc37a92f881abf5645b305bd6b3c86ee444 Mon Sep 17 00:00:00 2001 From: Andrew McDermott <amcdermo@redhat.com> Date: Fri, 6 Sep 2019 16:25:17 +0100 Subject: [PATCH] UPSTREAM: <carry>: openshift: revert https://github.com/openshift/kubernetes-autoscaler/pull/113 This reverts commit b8ec486e1f45e2f8dca8d8c208f1968c3b23de6f. --- cluster-autoscaler/main.go | 10 --- .../openshiftmachineapi_compare_nodegroups.go | 90 ------------------- 2 files changed, 100 deletions(-) delete mode 100644 cluster-autoscaler/processors/nodegroupset/openshiftmachineapi_compare_nodegroups.go diff --git a/cluster-autoscaler/main.go b/cluster-autoscaler/main.go index 550a7e5feb1c..50e96b64c1f0 100644 --- a/cluster-autoscaler/main.go +++ b/cluster-autoscaler/main.go @@ -35,7 +35,6 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/autoscaler/cluster-autoscaler/cloudprovider" cloudBuilder "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/builder" - "k8s.io/autoscaler/cluster-autoscaler/cloudprovider/openshiftmachineapi" "k8s.io/autoscaler/cluster-autoscaler/config" "k8s.io/autoscaler/cluster-autoscaler/core" "k8s.io/autoscaler/cluster-autoscaler/estimator" @@ -297,15 +296,6 @@ func buildAutoscaler() (core.Autoscaler, error) { Comparator: nodegroupset.IsAzureNodeInfoSimilar} } - if autoscalingOptions.CloudProviderName == openshiftmachineapi.ProviderName { - // We do this because of: - // - https://bugzilla.redhat.com/show_bug.cgi?id=1731011 - // - https://bugzilla.redhat.com/show_bug.cgi?id=1733235 - processors.NodeGroupSetProcessor = &nodegroupset.BalancingNodeGroupSetProcessor{ - Comparator: nodegroupset.IsOpenShiftMachineApiNodeInfoSimilar} - - } - opts := core.AutoscalerOptions{ AutoscalingOptions: autoscalingOptions, KubeClient: kubeClient, diff --git a/cluster-autoscaler/processors/nodegroupset/openshiftmachineapi_compare_nodegroups.go b/cluster-autoscaler/processors/nodegroupset/openshiftmachineapi_compare_nodegroups.go deleted file mode 100644 index 73424943f831..000000000000 --- a/cluster-autoscaler/processors/nodegroupset/openshiftmachineapi_compare_nodegroups.go +++ /dev/null @@ -1,90 +0,0 @@ -package nodegroupset - -import ( - apiv1 "k8s.io/api/core/v1" - "k8s.io/apimachinery/pkg/api/resource" - schedulernodeinfo "k8s.io/kubernetes/pkg/scheduler/nodeinfo" -) - -// maxMemoryDifferenceInKiloBytes describes how much -// Node.Status.Capacity can differ but still be considered equal. -var maxMemoryDifferenceInKiloBytes = resource.MustParse("128Ki") - -// IsOpenShiftMachineApiNodeInfoSimilar compares if two nodes should -// be considered part of the same NodeGroupSet. -func IsOpenShiftMachineApiNodeInfoSimilar(n1, n2 *schedulernodeinfo.NodeInfo) bool { - return isOpenShiftNodeInfoSimilar(n1, n2) -} - -// Note: this is a copy of isNodeInfoSimilar() and the only change is -// to tolerate a small memory capacity difference. -func isOpenShiftNodeInfoSimilar(n1, n2 *schedulernodeinfo.NodeInfo) bool { - capacity := make(map[apiv1.ResourceName][]resource.Quantity) - allocatable := make(map[apiv1.ResourceName][]resource.Quantity) - free := make(map[apiv1.ResourceName][]resource.Quantity) - nodes := []*schedulernodeinfo.NodeInfo{n1, n2} - for _, node := range nodes { - for res, quantity := range node.Node().Status.Capacity { - capacity[res] = append(capacity[res], quantity) - } - for res, quantity := range node.Node().Status.Allocatable { - allocatable[res] = append(allocatable[res], quantity) - } - requested := node.RequestedResource() - for res, quantity := range (&requested).ResourceList() { - freeRes := node.Node().Status.Allocatable[res].DeepCopy() - freeRes.Sub(quantity) - free[res] = append(free[res], freeRes) - } - } - - // For capacity we allow quantities to be within a few Kb - // because we find that some cloud instances are slightly - // smaller/larger than other, typically 8-16Ki. - // See: - // https://bugzilla.redhat.com/show_bug.cgi?id=1731011 - // https://bugzilla.redhat.com/show_bug.cgi?id=1733235 - for _, qtyList := range capacity { - if len(qtyList) != 2 || !compareResourceEqualWithTolerance(qtyList[0], qtyList[1], maxMemoryDifferenceInKiloBytes) { - return false - } - } - // For allocatable and free we allow resource quantities to be within a few % of each other - if !compareResourceMapsWithTolerance(allocatable, MaxAllocatableDifferenceRatio) { - return false - } - if !compareResourceMapsWithTolerance(free, MaxFreeDifferenceRatio) { - return false - } - - ignoredLabels := map[string]bool{ - apiv1.LabelHostname: true, - apiv1.LabelZoneFailureDomain: true, - apiv1.LabelZoneRegion: true, - "beta.kubernetes.io/fluentd-ds-ready": true, // this is internal label used for determining if fluentd should be installed as deamon set. Used for migration 1.8 to 1.9. - } - - labels := make(map[string][]string) - for _, node := range nodes { - for label, value := range node.Node().ObjectMeta.Labels { - ignore, _ := ignoredLabels[label] - if !ignore { - labels[label] = append(labels[label], value) - } - } - } - for _, labelValues := range labels { - if len(labelValues) != 2 || labelValues[0] != labelValues[1] { - return false - } - } - return true -} - -func compareResourceEqualWithTolerance(x, y, tolerance resource.Quantity) bool { - x.Sub(y) - if x.Sign() == -1 { - x.Neg() - } - return x.Cmp(tolerance) != 1 // <= max -}