podautoscaler

package
v1.27.9 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 19, 2023 License: Apache-2.0 Imports: 37 Imported by: 138

Documentation

Overview

Package podautoscaler contains logic for autoscaling number of pods based on metrics observed.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func NewDefaultHPARateLimiter added in v1.6.0

func NewDefaultHPARateLimiter(interval time.Duration) workqueue.RateLimiter

NewDefaultHPARateLimiter creates a rate limiter which limits overall (as per the default controller rate limiter), as well as per the resync interval

func NewFixedItemIntervalRateLimiter added in v1.6.0

func NewFixedItemIntervalRateLimiter(interval time.Duration) workqueue.RateLimiter

NewFixedItemIntervalRateLimiter creates a new instance of a RateLimiter using a fixed interval

Types

type FixedItemIntervalRateLimiter added in v1.6.0

type FixedItemIntervalRateLimiter struct {
	// contains filtered or unexported fields
}

FixedItemIntervalRateLimiter limits items to a fixed-rate interval

func (*FixedItemIntervalRateLimiter) Forget added in v1.6.0

func (r *FixedItemIntervalRateLimiter) Forget(item interface{})

Forget indicates that an item is finished being retried.

func (*FixedItemIntervalRateLimiter) NumRequeues added in v1.6.0

func (r *FixedItemIntervalRateLimiter) NumRequeues(item interface{}) int

NumRequeues returns back how many failures the item has had

func (*FixedItemIntervalRateLimiter) When added in v1.6.0

func (r *FixedItemIntervalRateLimiter) When(item interface{}) time.Duration

When returns the interval of the rate limiter

type HorizontalController

type HorizontalController struct {
	// contains filtered or unexported fields
}

HorizontalController is responsible for the synchronizing HPA objects stored in the system with the actual deployments/replication controllers they control.

func NewHorizontalController

func NewHorizontalController(
	evtNamespacer v1core.EventsGetter,
	scaleNamespacer scaleclient.ScalesGetter,
	hpaNamespacer autoscalingclient.HorizontalPodAutoscalersGetter,
	mapper apimeta.RESTMapper,
	metricsClient metricsclient.MetricsClient,
	hpaInformer autoscalinginformers.HorizontalPodAutoscalerInformer,
	podInformer coreinformers.PodInformer,
	resyncPeriod time.Duration,
	downscaleStabilisationWindow time.Duration,
	tolerance float64,
	cpuInitializationPeriod,
	delayOfInitialReadinessStatus time.Duration,
	containerResourceMetricsEnabled bool,
) *HorizontalController

NewHorizontalController creates a new HorizontalController.

func (*HorizontalController) Run

func (a *HorizontalController) Run(ctx context.Context, workers int)

Run begins watching and syncing.

type NormalizationArg added in v1.18.0

type NormalizationArg struct {
	Key               string
	ScaleUpBehavior   *autoscalingv2.HPAScalingRules
	ScaleDownBehavior *autoscalingv2.HPAScalingRules
	MinReplicas       int32
	MaxReplicas       int32
	CurrentReplicas   int32
	DesiredReplicas   int32
}

NormalizationArg is used to pass all needed information between functions as one structure

type ReplicaCalculator added in v1.5.0

type ReplicaCalculator struct {
	// contains filtered or unexported fields
}

ReplicaCalculator bundles all needed information to calculate the target amount of replicas

func NewReplicaCalculator added in v1.5.0

func NewReplicaCalculator(metricsClient metricsclient.MetricsClient, podLister corelisters.PodLister, tolerance float64, cpuInitializationPeriod, delayOfInitialReadinessStatus time.Duration) *ReplicaCalculator

NewReplicaCalculator creates a new ReplicaCalculator and passes all necessary information to the new instance

func (*ReplicaCalculator) GetExternalMetricReplicas added in v1.10.0

func (c *ReplicaCalculator) GetExternalMetricReplicas(currentReplicas int32, targetUsage int64, metricName, namespace string, metricSelector *metav1.LabelSelector, podSelector labels.Selector) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetExternalMetricReplicas calculates the desired replica count based on a target metric value (as a milli-value) for the external metric in the given namespace, and the current replica count.

func (*ReplicaCalculator) GetExternalPerPodMetricReplicas added in v1.10.0

func (c *ReplicaCalculator) GetExternalPerPodMetricReplicas(statusReplicas int32, targetUsagePerPod int64, metricName, namespace string, metricSelector *metav1.LabelSelector) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetExternalPerPodMetricReplicas calculates the desired replica count based on a target metric value per pod (as a milli-value) for the external metric in the given namespace, and the current replica count.

func (*ReplicaCalculator) GetMetricReplicas added in v1.5.0

func (c *ReplicaCalculator) GetMetricReplicas(currentReplicas int32, targetUsage int64, metricName string, namespace string, selector labels.Selector, metricSelector labels.Selector) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetMetricReplicas calculates the desired replica count based on a target metric usage (as a milli-value) for pods matching the given selector in the given namespace, and the current replica count

func (*ReplicaCalculator) GetObjectMetricReplicas added in v1.6.0

func (c *ReplicaCalculator) GetObjectMetricReplicas(currentReplicas int32, targetUsage int64, metricName string, namespace string, objectRef *autoscaling.CrossVersionObjectReference, selector labels.Selector, metricSelector labels.Selector) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetObjectMetricReplicas calculates the desired replica count based on a target metric usage (as a milli-value) for the given object in the given namespace, and the current replica count.

func (*ReplicaCalculator) GetObjectPerPodMetricReplicas added in v1.14.0

func (c *ReplicaCalculator) GetObjectPerPodMetricReplicas(statusReplicas int32, targetAverageUsage int64, metricName string, namespace string, objectRef *autoscaling.CrossVersionObjectReference, metricSelector labels.Selector) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetObjectPerPodMetricReplicas calculates the desired replica count based on a target metric usage (as a milli-value) for the given object in the given namespace, and the current replica count.

func (*ReplicaCalculator) GetRawResourceReplicas added in v1.6.0

func (c *ReplicaCalculator) GetRawResourceReplicas(ctx context.Context, currentReplicas int32, targetUsage int64, resource v1.ResourceName, namespace string, selector labels.Selector, container string) (replicaCount int32, usage int64, timestamp time.Time, err error)

GetRawResourceReplicas calculates the desired replica count based on a target resource usage (as a raw milli-value) for pods matching the given selector in the given namespace, and the current replica count

func (*ReplicaCalculator) GetResourceReplicas added in v1.5.0

func (c *ReplicaCalculator) GetResourceReplicas(ctx context.Context, currentReplicas int32, targetUtilization int32, resource v1.ResourceName, namespace string, selector labels.Selector, container string) (replicaCount int32, utilization int32, rawUtilization int64, timestamp time.Time, err error)

GetResourceReplicas calculates the desired replica count based on a target resource utilization percentage of the given resource for pods matching the given selector in the given namespace, and the current replica count

Directories

Path Synopsis
metrics packages contains metrics which are exposed from the HPA controller.
metrics packages contains metrics which are exposed from the HPA controller.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL