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 config 18 19 import ( 20 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 21 ) 22 23 // HPAControllerConfiguration contains elements describing HPAController. 24 type HPAControllerConfiguration struct { 25 // ConcurrentHorizontalPodAutoscalerSyncs is the number of HPA objects that are allowed to sync concurrently. 26 // Larger number = more responsive HPA processing, but more CPU (and network) load. 27 ConcurrentHorizontalPodAutoscalerSyncs int32 28 // horizontalPodAutoscalerSyncPeriod is the period for syncing the number of 29 // pods in horizontal pod autoscaler. 30 HorizontalPodAutoscalerSyncPeriod metav1.Duration 31 // horizontalPodAutoscalerUpscaleForbiddenWindow is a period after which next upscale allowed. 32 HorizontalPodAutoscalerUpscaleForbiddenWindow metav1.Duration 33 // horizontalPodAutoscalerDownscaleForbiddenWindow is a period after which next downscale allowed. 34 HorizontalPodAutoscalerDownscaleForbiddenWindow metav1.Duration 35 // HorizontalPodAutoscalerDowncaleStabilizationWindow is a period for which autoscaler will look 36 // backwards and not scale down below any recommendation it made during that period. 37 HorizontalPodAutoscalerDownscaleStabilizationWindow metav1.Duration 38 // horizontalPodAutoscalerTolerance is the tolerance for when 39 // resource usage suggests upscaling/downscaling 40 HorizontalPodAutoscalerTolerance float64 41 // HorizontalPodAutoscalerCPUInitializationPeriod is the period after pod start when CPU samples 42 // might be skipped. 43 HorizontalPodAutoscalerCPUInitializationPeriod metav1.Duration 44 // HorizontalPodAutoscalerInitialReadinessDelay is period after pod start during which readiness 45 // changes are treated as readiness being set for the first time. The only effect of this is that 46 // HPA will disregard CPU samples from unready pods that had last readiness change during that 47 // period. 48 HorizontalPodAutoscalerInitialReadinessDelay metav1.Duration 49 } 50