인프라/시스템 구축

[ EKS ] HPA

김붕어87 2023. 4. 4. 16:18
반응형
HPA(HorizontalPodAutoscaler) 이란?
POD의 개수(REPLICAS)를 리소스의 CPU 사용률에 따라 POD를 자동으로 조절해주는 기능입니다.

메뉴얼 링크

 

 

 

 

[ 선행 작업 - Required ]

  • EKS Cluster 설치

 

 

 

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