안녕하세요, 

베스핀글로벌 GCP Support팀입니다.


이번 아티클에서는 주제 "GKE에 HPA(Horizontal Pod Autoscaler)를 적용하는 방법"에 대해 다루고자 합니다.



HPA(Horizontal Pod Autoscaler) 


HPA(Horizontal Pod Autoscaler)는 Deployment 또는 StatefulSet과 같은 컨트롤러가 관리하는 Pod의 수를 자동으로 조절하는 Kubernetes의 기능입니다. 

CPU 사용량, 메모리 사용량, 커스텀 메트릭, 또는 특정 이벤트와 같은 다양한 메트릭을 기반으로 Pod의 수를 동적으로 늘리거나 줄일 수 있습니다. 

이를 통해 애플리케이션의 부하 변화에 유 flexible하게 대응하고 리소스를 효율적으로 사용할 수 있습니다.


GKE에서 HPA를 사용하면 급격하게 증가하는 트래픽 또는 워크로드에 따라 Pod 수를 자동으로 조정하여 애플리케이션의 안정성과 성능을 유지할 수 있습니다.[1]

단, HPA로 생성되는 Pod는 Node의 리소스 한계 내에서 생성되므로 HPA 구성 시 Node의 용량을 고려해야 합니다. 

노드에 충분한 리소스가 없다면 Pod 생성에 실패하고 애플리케이션에 장애가 발생할 수 있습니다. 

따라서 Node Pool의 Autoscaling 기능을 함께 사용하는 것을 권장합니다.



HPA 적용 방법


YAML 파일을 사용하여 HPA를 정의하고 kubectl apply -f <yaml 파일명> 명령어를 사용하여 HPA를 생성할 수 있습니다.

YAML 파일을 사용하면 HPA 구성을 코드로 관리할 수 있고, 버전 관리 시스템을 통해 변경 이력을 추적할 수 있습니다. 

복잡한 설정이나 커스텀 메트릭을 사용할 경우 YAML 파일을 사용하는 것이 좋습니다.


아래는 hpa yaml파일 예시입니다.



※ YAML 파일 사용이 어렵다면 콘솔에서도 워크로드 페이지로 이동하여 작업 > 자동확장을 클릭하여 GUI 상으로도 HPA 구성을 할 수 있습니다. 


HPA 적용 후 다음과 같이 콘솔 상에서 확인 할 수 있습니다.



현재 Pod 수, 타겟 Pod 수, 메트릭 값 등을 확인하고 HPA가 정상적으로 동작하는지 모니터링할 수 있습니다.

또한 kubectl describe hpa <hpa 이름> 명령어를 사용하여 HPA의 상세 정보를 확인할 수도 있습니다.



참조 링크


[1] GKE Horizontal Pod Autoscaling 구성 

https://cloud.google.com/kubernetes-engine/docs/how-to/horizontal-pod-autoscaling



관련 문의사항이 있으시면 Support Portal에 문의해 주시기 바랍니다.


감사합니다.