Does HPA(Horizontal pod autoscaling) considers the mean of CPU utilization of multiple containers(in a pod) to scale the pods?

9/9/2017

I would like to know, if HPA considers the mean of CPU utilization of multiple containers in a pod, in order to scale up/down the no. of pods. For instance, if I specify a HPA like below for a deployment(pod) that has 2 containers. In order for the HPA to scale up, does it require the CPU utilization to be reached to 80% in both the containers? In other words, If container A has CPU utilization of 80% but container B has CPU utilization of only 60%. Does that mean that the pods will not be scaled up by HPA. As far as I have observed, this is the case. But I am not sure about this, since there is no explicit statement regarding this in the kubernetes documentation. And unfortunately, I am not the best of developers to figure this out from the source code. Any help & if possible with reference, would be greatly appreciated. Thank you so much.

apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: blackbox-rc-hpa
  namespace: monitoring
spec:
  scaleTargetRef:
    apiVersion: v1
    kind: extensions/v1beta1
    name: blackbox
  minReplicas: 1
  maxReplicas: 4
  targetCPUUtilizationPercentage: 80
-- Suhas Chikkanna
kubectl
kubernetes
kubernetes-health-check

3 Answers

3/28/2018

There is a 10% tolerance of targetCPUUtilizationPercentage. In your case, the average cpu utilization should be larger than 88% to trigger scaling up, and less than 72% to scale down. Because the average CPU utlization is 70%, your replicas will be scaled down to 1.

-- Haoyuan Ge
Source: StackOverflow

9/10/2017

The controller calculates the utilization value as a percentage on the containers in each pod and then takes the mean. So in your scenerio mean will be 70% https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/

-- Innocent Anigbo
Source: StackOverflow

9/9/2017

The pod resources requested is the sum of the resources requested by all it's containers. So, in that scenario you probably have 70% CPU utilization.

-- rod
Source: StackOverflow