3
respostas

Tempo de métricas do HPA

Boa tarde,

Gostaria de saber qual o tempo em que o HPA realiza a coleta de métrica para realizar as ações de escalabilidade. Por exemplo, vamos supor que por apenas alguns segundos meu pod consuma + de 50% de CPU, um novo pod seria criado e logo em seguida destruido porque o limite foi atingido apenas brevemente?

Grato

3 respostas

Pela documentação (https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#algorithm-details) a fórmula é:

desiredReplicas = ceil[currentReplicas ( currentMetricValue / desiredMetricValue )]

Ainda pela documentação é dito:

The control plane skips any scaling action if the ratio is sufficiently close to 1.0 (within a globally-configurable tolerance, 0.1 by default).

Ou seja, ele tem uma tolerância de até 10% na variação desse valor. A partir disso, ele aplica o autoscaling.

Entendi, mas por quanto tempo essa métrica é coletada para disparar a regra? Se por apenas 1 segundo esse limite for atingido, já ocorre o auto scale?

Na verdade não é por quanto tempo, mas de quanto em quanto tempo.

https://www.kubecost.com/kubernetes-autoscaling/kubernetes-hpa/

Once configured, the Horizontal Pod Autoscaler controller is in charge of checking the metrics and then scaling your replicas up or down accordingly. By default, HPA checks metrics every 15 seconds.

Então, a cada 15 segundos, as métricas são verificadas e os valores são diretamente usados. Se as métricas se referem a um conjunto de pods, é feita a média deles.

Mas sua lógica está certa: mesmo se nesse intervalo de 15 segundos as métricas variarem muito a ponto de alterar o número de réplicas a serem instanciadas, pode ocorrer o fenômeno de thrashing ou flapping:

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#flapping Stability of workload scale When managing the scale of a group of replicas using the HorizontalPodAutoscaler, it is possible that the number of replicas keeps fluctuating frequently due to the dynamic nature of the metrics evaluated. This is sometimes referred to as thrashing, or flapping. It's similar to the concept of hysteresis in cybernetics.