반응형
HPA(HorizontalPodAutoscaler) 이란?
POD의 개수(REPLICAS)를 리소스의 CPU 사용률에 따라 POD를 자동으로 조절해주는 기능입니다.
메뉴얼 링크
- https://docs.aws.amazon.com/ko_kr/eks/latest/userguide/horizontal-pod-autoscaler.html
- https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/
[ 선행 작업 - Required ]
- EKS Cluster 설치
- metrics-server 설치
HPA 테스트
1. Apache 배포
kubectl apply -f https://k8s.io/examples/application/php-apache.yaml -n dw
2. HPA(Horizontal Pod Autoscaler) 설정
- CPU 사용률 50%가 넘으면 최소 1개의 pod에서 최대 10개의 pod으로 증설된다.
- CPU 사용률 50% 이하인 경우 최소 1개의 pod까지 줄인다.
- CPU 사용률은 모든 POD의 평균값
kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10 -n dw
- hpa yaml example
vi hpa.yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: php-apache
namespace: dw
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: php-apache
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 50
- HPA 설정 확인
kubectl get hpa -n dw
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache <unknown>/50% 1 10 0 5s
3. 부하 테스트
- wget 부하 테스트
kubectl run -i -n dw \
--tty load-generator \
--rm --image=busybox \
--restart=Never \
-- /bin/sh -c "while sleep 0.01; do wget -q -O- http://php-apache; done"
- HPA TARGETS CPU 증가
watch "kubectl get hpa -n dw"
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 120%/50% 1 10 1 32m
- POD CPU 증가
watch "kubectl get pod -n dw"
php-apache-7d665c4ddf-68986 68m 12Mi
php-apache-7d665c4ddf-6g7qq 107m 12Mi
php-apache-7d665c4ddf-6tb9d 81m 12Mi
php-apache-7d665c4ddf-hz64p 53m 12Mi
php-apache-7d665c4ddf-l2t4c 82m 12Mi
php-apache-7d665c4ddf-lflkq 95m 12Mi
- wget 부하 테스트 중지
- HPA TARGETS CPU 상태 확인
watch "kubectl get hpa -n dw"
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 42%/50% 1 10 6 38m
[ 증가 ]
복제본 수가 증가하는데 1분이상 소요.
TARGETS CPU 수치가 50% 이상이되면 POD가 추가 증설된다.
TARGETS CPU 수치는 POD의 총 합계
[ 유지 ]
TARGETS CPU가 50% 이하로 유지되는데 필요한 POD의 개수가 6개이면 6개로 계속 유지된다.
[ 축소 ]
다시 축소하기 위한 default time은 5분이다.
[ TARGETS unknown 문제 ]
pod에서 limit, request 설정이 빠지면 TARGETS에서 unkown으로 보이며, HPA 설정이 적용되지 않습니다.
반응형
'인프라 > 시스템 구축' 카테고리의 다른 글
[ EKS ] ClusterAutoscaler (CA) (0) | 2023.04.06 |
---|---|
[ EKS ] VPA (0) | 2023.04.06 |
[ EKS ] Secret, ConfigMap 설정 (0) | 2023.04.04 |
[ EKS ] ConfigMap, aws-auth 설정 (0) | 2023.04.04 |
[ EKS ] Limit, Request 설정 (0) | 2023.04.04 |