Ssoon

[5주차] EKS Autoscaling - Horizontal Pod AutoScaler (HPA) 본문

AWS EKS Workshop Study

[5주차] EKS Autoscaling - Horizontal Pod AutoScaler (HPA)

구구달스 2023. 5. 21. 22:16
CloudNet@ 팀의 AWS EKS Workshop Study 5주차 정리입니다.
# EKS Immersion Workshop 의 내용입니다.

※ 사전 구성 작업

 

eks-node-viewer 설치

  • Cluster 내에서 동적 노드 사용 시각화
yum install -y go
go install github.com/awslabs/eks-node-viewer/cmd/eks-node-viewer@latest
sudo mv -v ~/go/bin/eks-node-viewer /usr/local/bin
eks-node-viewer

 

[ Horizontal Pod Autoscaler (HPA) ]

 

Kubernetes 클러스터 내에서 파드(Pod)의 수를 자동으로 조정

애플리케이션의 부하에 따라 파드의 수를 동적으로 확장하거나 축소하여 리소스 사용을 최적화

파드의 CPU 사용량 또는 사용자 정의 지표에 기반하여 파드의 수를 조정

  • 지표 수집 및 분석: 정의된 지표를 주기적으로 수집하고 분석합니다. 일반적으로 CPU 사용량이나 메트릭 서버를 통해 지정된 사용자 정의 지표를 수집합니다.
  • 파드 확장 또는 축소: 분석된 지표를 기반으로 파드의 수를 조정합니다. 예를 들어, CPU 사용량이 높을 경우 파드의 수를 늘려서 추가 리소스를 할당하고, CPU 사용량이 낮을 경우 파드의 수를 줄여서 리소스를 절약합니다.
  • 파드 수 조정: Kubernetes API를 통해 파드의 수를 동적으로 변경합니다. 파드 수를 늘리거나 줄일 때는 해당 파드의 복제본을 생성하거나 삭제합니다.

https://aws.amazon.com/ko/blogs/opensource/horizontal-pod-autoscaling-eks/

 

[ Metrics Server ]

HPA는 클러스터의 부하에 따라 파드의 수를 동적으로 조정하는 데 사용되는데, 이를 위해 CPU 사용량, 메모리 사용량 등의 메트릭이 필요합니다. Metrics Server가 이러한 메트릭을 수집합니다.

  • Kubernetes 클러스터에서 리소스 사용에 관한 메트릭을 수집하고 노출하는 역할
  • Kubernetes API를 통해 애플리케이션, 파드 및 노드의 상태와 성능에 대한 정보를 제공
  • 리소스 사용량, CPU 사용량, 메모리 사용량, 디스크 I/O 등과 같은 메트릭을 주기적으로 수집

 

  • Metrics Server 를 배포하고 상태를 확인합니다.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml

 

[ proddetail 마이크로서비스용 HPA 리소스 생성 ]

  • CPU가 proddetail 서비스에 할당된 컨테이너 리소스의 40%를 초과하면 HPA가 확장됩니다.
kubectl autoscale deployment proddetail -n workshop `#The target average CPU utilization` \
    --cpu-percent=40 \
    --min=1 `#The lower limit for the number of pods that can be set by the autoscaler` \
    --max=3 `#The upper limit for the number of pods that can be set by the autoscaler`

  • kubectl을 사용하여 HPA를 봅니다.
kubectl get hpa -n workshop

 

[ 부하를 생성하여 스케일링 트리거 ]

  • 새 컨테이너 bash에서 루프를 실행하여 /catalogDetail API를 지속적으로 호출합니다.
kubectl run -i --tty load-generator --image=busybox /bin/sh

# while true; do wget -q -O - http://proddetail.workshop.svc.cluster.local:3000/catalogDetail; done
  • HPA를 확인합니다.

  • CPU TARGETS 값이 40% 이상이 되면 HPA가 포드를 최대값(3)까지 확장되었다가 부하를 중지하면 다시 최소값(1)로 축소되는 것을 볼 수 있습니다.

  • eks-node-viewer

  • CloudWatch Container Insights

 

[ Clean up ]

kubectl delete -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
kubectl delete pod load-generator
kubectl delete hpa proddetail -n workshop

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Comments