[K8S] HPA (Horizontal Pod Autoscaler)

Hyun-Sung Kim·2025년 1월 5일

Kubernetes

목록 보기
7/24
post-thumbnail

1. HPA란?

Kubernetes 클러스터의 자동 스케일링을 위해 기본으로 제공되는 두 가지 도구가 있습니다. 바로
Horizontal Pod Autoscaler(HPA)와 Cluster Autoscaler(CA)입니다.

그 중에 여기서는 HPA에 대해 집중적으로 설명합니다.

<용 도>

  • HPA는 CPU, 메모리 사용량을 기반으로 Pod의 개수를 늘리거나 줄여서 애플리케이션의 요구에 맞게 트래픽을 처리하도록 합니다.

<구성 방법>
1. Metric source(예: Kubernetes metric 서버)를 작업할 Amazon EKS 클러스터에 설치
2. 목표 CPU 사용률(백분율)을 설정하면 Horizontal Pod Autoscaler가 이 목표를 충족하기 위해 애플리케이션을 축소 또는 확장


2. HPA 구현 절차

  • Fargate 환경일 경우, 해당 리소스를 위한 Profile 생성

  • k8s Metric 서버 설치

    kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

  • 생성된 Metric서버 조회

    kubectl get deployment metrics-server -n kube-system

  • 배포할 app의 yaml 파일에 'resource' 필드 추가 & 적용

  • HPA 리소스 생성

    kubectl autoscale deployment <deployment 이름> --cpu-percent=50 --min=1 --max=10 -n <namespace 이름>

    	- 최소 1개에서 최대 10개의 포드로 배포에 대해 50퍼센트의 CPU 사용률을 달성하려는 자동 조정기가 생성됩니다.
    	- 평균 CPU 로드가 50퍼센트 이하인 경우 자동 조정기는 배포 시 포드의 수를 최소 1개로 줄이려고 합니다. 로드가 50퍼센트보다 큰 경우 자동 조정기는 배포 시 포드의 수를 최대 10개로 늘이려고 합니다.

3. HPA 구현 결과

  • HPA 리소스 조회

    kubectl get hpa -n <namespace 이름>

    < 위 HPA 현황 해설>    

    * 왼쪽 %값 : 실제 CPU 사용률
    * 오른쪽 %값 : Pod개수가 자동으로 조정될, CPU 사용률 임계치 수치
    * 실제 CPU 사용율이 임계치보다 높으면 복제본 수가 최대 10까지 증가합니다. 
   
  • Metric 서버 및 HPA 구성 이후, 아래와 같이 각 deployment 별로 scale-in/out의 임계치와 현재 부하 상태를 확인 가능해 졌습니다.

  • hpa에 의해 수행된 정확한 scale out 이력 확인

    kubectl describe hpa -n <namespace 이름> <hpa 이름>

  • 참고로, Metrics 서버 구축 이후, 아래 명령을 통해 Node / Pod 단위로 CPU, Memory 사용량 조회도 가능해 졌습니다.

profile
Cloud Engineer

0개의 댓글