Ssoon
[5주차] EKS Autoscaling - Horizontal Pod AutoScaler (HPA) 본문
AWS EKS Workshop Study
[5주차] EKS Autoscaling - Horizontal Pod AutoScaler (HPA)
구구달스 2023. 5. 21. 22:16CloudNet@ 팀의 AWS EKS Workshop Study 5주차 정리입니다.
# EKS Immersion Workshop 의 내용입니다.
※ 사전 구성 작업
- EKS Cluster 및 Node 구성 완료.
- 제품 카탈로그 애플리케이션 배포 완료.
- Cloudwatch Container Insights 완료.
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를 통해 파드의 수를 동적으로 변경합니다. 파드 수를 늘리거나 줄일 때는 해당 파드의 복제본을 생성하거나 삭제합니다.
[ 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
'AWS EKS Workshop Study' 카테고리의 다른 글
[5주차] EKS Autoscaling - KARPENTER - SET UP THE ENVIRONMENT (0) | 2023.05.25 |
---|---|
[5주차] EKS Autoscaling - Cluster Autoscaler (CA) (0) | 2023.05.21 |
[4주차] EKS Observability - ADOT, AMP 및 AMG를 사용한 모니터링 (0) | 2023.05.20 |
[4주차] EKS Observability - Logs, Traces and Metrics (0) | 2023.05.20 |
[3주차] EKS 스토리지 - FSx for Lustre CSI driver (0) | 2023.05.12 |
Comments