더북(TheBook)

Tip ☆ HPA를 통해 늘어나는 파드 수 계산 방법


HPA는 다음과 같은 방법으로 파드의 증가 또는 감소를 조절합니다. 디플로이먼트 스펙에서 resources의 CPU를 10m으로 설정하고, autoscale에서 cpu-percent를 50%로 했다고 가정하겠습니다.

kubectl top pods로 확인된 파드의 메트릭(CPU, MEMORY) 값이 다음과 같다고 해봅시다.

[root@m-k8s ~]# kubectl top pods
NAME                   CPU(cores)   MEMORY(bytes)
hpa-79fc78897f-2qv58   29m          1Mi

파드는 29m이라는 부하를 받고 있습니다. 1개의 파드가 처리할 수 있는 부하는 10m이고, CPU 부하량이 50%가 넘으면 추가 파드를 생성해야 하므로 부하가 5m이 넘으면 파드를 증설하게 돼 있습니다. 따라서 29m/5를 하고 올림하면 6이라는 숫자가 나옵니다. 결국 증가하는 파드의 수는 6입니다. 이때 부하 총량을 가지고 HPA가 작동하기 때문에 일부 파드는 5m을 넘을 수도 있습니다.

[root@m-k8s ~]# kubectl top pods
NAME                   CPU(cores)   MEMORY(bytes)
hpa-79fc78897f-2qv58  7m           1Mi
hpa-79fc78897f-cl7zv   4m           1Mi
hpa-79fc78897f-gwngb   3m           1Mi
hpa-79fc78897f-lqm2m   5m           1Mi
hpa-79fc78897f-thvjs   4m           1Mi
hpa-79fc78897f-ase3p   6m           1Mi

예를 들어, 1개의 파드에서만 다음과 같이 부하가 발생한다면 해당 부하는 분산되지 않습니다. 따라서 부하 분산을 위해서는 쿠버네티스 서비스를 통해 파드 그룹인 디플로이먼트에 도달해야 합니다.

[root@m-k8s ~]# kubectl top pods
NAME                   CPU(cores)   MEMORY(bytes)
hpa-79fc78897f-2qv58   24m          1Mi
hpa-79fc78897f-cl7zv   0m           1Mi
hpa-79fc78897f-gwngb   0m           1Mi
hpa-79fc78897f-lqm2m   0m           1Mi
hpa-79fc78897f-thvjs   0m           1Mi

kubectl get hpa를 실행하면 HPA의 현재 상태를 요약해서 보여줍니다.

[root@m-k8s ~]# kubectl get hpa    
NAME  REFERENCE        TARGETS   MINPODS   MAXPODS   REPLICAS   AGE
hpa   Deployment/hpa   48%/50%   1         30        6          9m35s
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.