# Functions
ConfigurePredicateCheckerForLoop can be run to update predicateChecker configuration based on current state of the cluster.
FilterOutExpendableAndSplit filters out expendable pods and splits into: - waiting for lower priority pods preemption - other pods.
FilterOutExpendablePods filters out expendable pods.
FilterOutSchedulable checks whether pods from <unschedulableCandidates> marked as unschedulable by Scheduler actually can't be scheduled on any node and filter out the ones that can.
GetNodeInfosForGroups finds NodeInfos for all node groups used to manage the given nodes.
NewAutoscaler creates an autoscaler of an appropriate type according to the parameters.
NewAutoscalerBuilder builds an AutoscalerBuilder from required parameters.
NewAutoscalingContext returns an autoscaling context from all the necessary parameters passed via arguments.
NewDynamicAutoscaler builds a DynamicAutoscaler from required parameters.
NewScaleDown builds new ScaleDown object.
NewStaticAutoscaler creates an instance of Autoscaler filled with provided parameters.
ScaleUp tries to scale the cluster up.
UpdateClusterStateMetrics updates metrics related to cluster state.
UpdateEmptyClusterStateMetrics updates metrics related to empty cluster's state.
# Constants
EvictionRetryTime is the time after CA retries failed pod eviction.
MaxCloudProviderNodeDeletionTime is the maximum time needed by cloud provider to delete a node.
MaxKubernetesEmptyNodeDeletionTime is the maximum time needed by Kubernetes to delete an empty node.
MaxPodEvictionTime is the maximum time CA tries to evict a pod before giving up.
Megabyte is 2^20 bytes.
PodEvictionHeadroom is the extra time we wait to catch situations when the pod is ignoring SIGTERM and is killed with SIGKILL after MaxGracefulTerminationTime.
ReschedulerTaintKey is the name of the taint created by rescheduler.
ScaleDownDisabledKey is the name of annotation marking node as not eligible for scale down.
ScaleDownError - scale down finished with error.
ScaleDownNodeDeleted - a node was deleted.
ScaleDownNodeDeleteStarted - a node deletion process was started.
ScaleDownNoNodeDeleted - unneeded nodes present but not available for deletion.
ScaleDownNoUnneeded - no unneeded nodes and no errors.
UnremovableNodeRecheckTimeout is the timeout before we check again a node that couldn't be removed before.
# Structs
AutoscalerBuilderImpl builds new autoscalers from its state including initial `AutoscalingOptions` given at startup and `dynamic.Config` read on demand from the configmap.
AutoscalerOptions is the whole set of options for configuring an autoscaler.
AutoscalingContext contains user-configurable constant and configuration-related objects passed to scale up/scale down functions.
AutoscalingOptions contain various options to customize how autoscaling works.
DynamicAutoscaler is a variant of autoscaler which supports dynamic reconfiguration at runtime.
NodeDeleteStatus tells whether a node is being deleted right now.
ScaleDown is responsible for maintaining the state needed to perform unneeded node removals.
StaticAutoscaler is an autoscaler which has all the core functionality of a CA but without the reconfiguration feature.
# Interfaces
Autoscaler is the main component of CA which scales up/down node groups according to its configuration The configuration can be injected at the creation of an autoscaler.
AutoscalerBuilder builds an instance of Autoscaler which is the core of CA.
# Type aliases
ScaleDownResult represents the state of scale down.