Remove ScaleDown dependency on clusterStateRegistry
This commit is contained in:
parent
f445a6a887
commit
95fd1ed645
|
|
@ -22,7 +22,6 @@ import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
|
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
|
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/context"
|
"k8s.io/autoscaler/cluster-autoscaler/context"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/core/scaledown/deletiontracker"
|
"k8s.io/autoscaler/cluster-autoscaler/core/scaledown/deletiontracker"
|
||||||
"k8s.io/autoscaler/cluster-autoscaler/core/scaledown/eligibility"
|
"k8s.io/autoscaler/cluster-autoscaler/core/scaledown/eligibility"
|
||||||
|
|
@ -46,7 +45,6 @@ import (
|
||||||
type ScaleDown struct {
|
type ScaleDown struct {
|
||||||
context *context.AutoscalingContext
|
context *context.AutoscalingContext
|
||||||
processors *processors.AutoscalingProcessors
|
processors *processors.AutoscalingProcessors
|
||||||
clusterStateRegistry *clusterstate.ClusterStateRegistry
|
|
||||||
unremovableNodes *unremovable.Nodes
|
unremovableNodes *unremovable.Nodes
|
||||||
unneededNodes *unneeded.Nodes
|
unneededNodes *unneeded.Nodes
|
||||||
podLocationHints map[string]string
|
podLocationHints map[string]string
|
||||||
|
|
@ -59,7 +57,7 @@ type ScaleDown struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewScaleDown builds new ScaleDown object.
|
// NewScaleDown builds new ScaleDown object.
|
||||||
func NewScaleDown(context *context.AutoscalingContext, processors *processors.AutoscalingProcessors, clusterStateRegistry *clusterstate.ClusterStateRegistry, ndt *deletiontracker.NodeDeletionTracker, deleteOptions simulator.NodeDeleteOptions) *ScaleDown {
|
func NewScaleDown(context *context.AutoscalingContext, processors *processors.AutoscalingProcessors, ndt *deletiontracker.NodeDeletionTracker, deleteOptions simulator.NodeDeleteOptions) *ScaleDown {
|
||||||
usageTracker := simulator.NewUsageTracker()
|
usageTracker := simulator.NewUsageTracker()
|
||||||
removalSimulator := simulator.NewRemovalSimulator(context.ListerRegistry, context.ClusterSnapshot, context.PredicateChecker, usageTracker, deleteOptions, false)
|
removalSimulator := simulator.NewRemovalSimulator(context.ListerRegistry, context.ClusterSnapshot, context.PredicateChecker, usageTracker, deleteOptions, false)
|
||||||
unremovableNodes := unremovable.NewNodes()
|
unremovableNodes := unremovable.NewNodes()
|
||||||
|
|
@ -67,7 +65,6 @@ func NewScaleDown(context *context.AutoscalingContext, processors *processors.Au
|
||||||
return &ScaleDown{
|
return &ScaleDown{
|
||||||
context: context,
|
context: context,
|
||||||
processors: processors,
|
processors: processors,
|
||||||
clusterStateRegistry: clusterStateRegistry,
|
|
||||||
unremovableNodes: unremovableNodes,
|
unremovableNodes: unremovableNodes,
|
||||||
unneededNodes: unneeded.NewNodes(processors.NodeGroupConfigProcessor, resourceLimitsFinder),
|
unneededNodes: unneeded.NewNodes(processors.NodeGroupConfigProcessor, resourceLimitsFinder),
|
||||||
podLocationHints: make(map[string]string),
|
podLocationHints: make(map[string]string),
|
||||||
|
|
@ -219,9 +216,6 @@ func (sd *ScaleDown) UpdateUnneededNodes(
|
||||||
// Update state and metrics
|
// Update state and metrics
|
||||||
sd.podLocationHints = newHints
|
sd.podLocationHints = newHints
|
||||||
sd.nodeUtilizationMap = utilizationMap
|
sd.nodeUtilizationMap = utilizationMap
|
||||||
unneededNodesList := sd.unneededNodes.AsList()
|
|
||||||
sd.clusterStateRegistry.UpdateScaleDownCandidates(unneededNodesList, timestamp)
|
|
||||||
metrics.UpdateUnneededNodesCount(len(unneededNodesList))
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -243,7 +237,6 @@ func (sd *ScaleDown) markSimulationError(simulatorErr errors.AutoscalerError,
|
||||||
klog.Errorf("Error while simulating node drains: %v", simulatorErr)
|
klog.Errorf("Error while simulating node drains: %v", simulatorErr)
|
||||||
sd.unneededNodes.Clear()
|
sd.unneededNodes.Clear()
|
||||||
sd.nodeUtilizationMap = make(map[string]utilization.Info)
|
sd.nodeUtilizationMap = make(map[string]utilization.Info)
|
||||||
sd.clusterStateRegistry.UpdateScaleDownCandidates(nil, timestamp)
|
|
||||||
return simulatorErr.AddPrefix("error while simulating node drains: ")
|
return simulatorErr.AddPrefix("error while simulating node drains: ")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1289,13 +1289,12 @@ func newWrapperForTesting(ctx *context.AutoscalingContext, clusterStateRegistry
|
||||||
if ndt == nil {
|
if ndt == nil {
|
||||||
ndt = deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
ndt = deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
||||||
}
|
}
|
||||||
|
|
||||||
deleteOptions := simulator.NodeDeleteOptions{
|
deleteOptions := simulator.NodeDeleteOptions{
|
||||||
SkipNodesWithSystemPods: true,
|
SkipNodesWithSystemPods: true,
|
||||||
SkipNodesWithLocalStorage: true,
|
SkipNodesWithLocalStorage: true,
|
||||||
MinReplicaCount: 0,
|
MinReplicaCount: 0,
|
||||||
}
|
}
|
||||||
sd := NewScaleDown(ctx, NewTestProcessors(), clusterStateRegistry, ndt, deleteOptions)
|
sd := NewScaleDown(ctx, NewTestProcessors(), ndt, deleteOptions)
|
||||||
actuator := actuation.NewActuator(ctx, clusterStateRegistry, ndt, deleteOptions)
|
actuator := actuation.NewActuator(ctx, clusterStateRegistry, ndt, deleteOptions)
|
||||||
return NewScaleDownWrapper(sd, actuator)
|
return NewScaleDownWrapper(sd, actuator)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -164,7 +164,7 @@ func NewStaticAutoscaler(
|
||||||
}
|
}
|
||||||
|
|
||||||
ndt := deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
ndt := deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
||||||
scaleDown := legacy.NewScaleDown(autoscalingContext, processors, clusterStateRegistry, ndt, deleteOptions)
|
scaleDown := legacy.NewScaleDown(autoscalingContext, processors, ndt, deleteOptions)
|
||||||
actuator := actuation.NewActuator(autoscalingContext, clusterStateRegistry, ndt, deleteOptions)
|
actuator := actuation.NewActuator(autoscalingContext, clusterStateRegistry, ndt, deleteOptions)
|
||||||
scaleDownWrapper := legacy.NewScaleDownWrapper(scaleDown, actuator)
|
scaleDownWrapper := legacy.NewScaleDownWrapper(scaleDown, actuator)
|
||||||
processorCallbacks.scaleDownPlanner = scaleDownWrapper
|
processorCallbacks.scaleDownPlanner = scaleDownWrapper
|
||||||
|
|
@ -528,7 +528,12 @@ func (a *StaticAutoscaler) RunOnce(currentTime time.Time) errors.AutoscalerError
|
||||||
}
|
}
|
||||||
|
|
||||||
actuationStatus := a.scaleDownActuator.CheckStatus()
|
actuationStatus := a.scaleDownActuator.CheckStatus()
|
||||||
if typedErr := a.scaleDownPlanner.UpdateClusterState(podDestinations, scaleDownCandidates, actuationStatus, pdbs, currentTime); typedErr != nil {
|
typedErr := a.scaleDownPlanner.UpdateClusterState(podDestinations, scaleDownCandidates, actuationStatus, pdbs, currentTime)
|
||||||
|
// Update clusterStateRegistry and metrics regardless of whether ScaleDown was successful or not.
|
||||||
|
unneededNodes := a.scaleDownPlanner.UnneededNodes()
|
||||||
|
a.clusterStateRegistry.UpdateScaleDownCandidates(unneededNodes, currentTime)
|
||||||
|
metrics.UpdateUnneededNodesCount(len(unneededNodes))
|
||||||
|
if typedErr != nil {
|
||||||
scaleDownStatus.Result = status.ScaleDownError
|
scaleDownStatus.Result = status.ScaleDownError
|
||||||
klog.Errorf("Failed to scale down: %v", typedErr)
|
klog.Errorf("Failed to scale down: %v", typedErr)
|
||||||
return typedErr
|
return typedErr
|
||||||
|
|
|
||||||
|
|
@ -1507,7 +1507,7 @@ func newScaleDownPlannerAndActuator(t *testing.T, ctx *context.AutoscalingContex
|
||||||
MinReplicaCount: 0,
|
MinReplicaCount: 0,
|
||||||
}
|
}
|
||||||
ndt := deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
ndt := deletiontracker.NewNodeDeletionTracker(0 * time.Second)
|
||||||
sd := legacy.NewScaleDown(ctx, p, cs, ndt, deleteOptions)
|
sd := legacy.NewScaleDown(ctx, p, ndt, deleteOptions)
|
||||||
actuator := actuation.NewActuator(ctx, cs, ndt, deleteOptions)
|
actuator := actuation.NewActuator(ctx, cs, ndt, deleteOptions)
|
||||||
wrapper := legacy.NewScaleDownWrapper(sd, actuator)
|
wrapper := legacy.NewScaleDownWrapper(sd, actuator)
|
||||||
return wrapper, wrapper
|
return wrapper, wrapper
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue