Kubernetes 클러스터의 자동 스케일링을 위해 기본으로 제공되는 두 가지 도구가 있습니다. 바로
Horizontal Pod Autoscaler(HPA)와 Cluster Autoscaler(CA)입니다.
그 중에 여기서는 HPA에 대해 집중적으로 설명합니다.

<용 도>
<구성 방법>
1. Metric source(예: Kubernetes metric 서버)를 작업할 Amazon EKS 클러스터에 설치
2. 목표 CPU 사용률(백분율)을 설정하면 Horizontal Pod Autoscaler가 이 목표를 충족하기 위해 애플리케이션을 축소 또는 확장
Fargate 환경일 경우, 해당 리소스를 위한 Profile 생성
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개로 늘이려고 합니다.
kubectl get hpa -n <namespace 이름>

< 위 HPA 현황 해설>
* 왼쪽 %값 : 실제 CPU 사용률
* 오른쪽 %값 : Pod개수가 자동으로 조정될, CPU 사용률 임계치 수치
* 실제 CPU 사용율이 임계치보다 높으면 복제본 수가 최대 10까지 증가합니다.

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