1. 개요
- HPA는 Horizontal Pod Autoscaler의 약자입니다.
HPA는 애플리케이션 메트릭을 모니터링하여 Deployment, ReplicaSet, StatefulSet의 Pod 수를 자동으로 조절하는 기능입니다.
* 참고 URL: https://kubernetes.io/ko/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/
2. 사전 조건
- EKS 구축(Worker Node 포함)
- EKS 관리할 서버 구축
- EKS 관리하는 서버에 kubectl 설치
3. 내용
3.0 EKS 구축 및 kubectl 명령어 확인
→ Node Status가 Ready 확인(Status가 Not Ready이거나 kubectl 명령어가 나오지 않을 경우 정상적으로 EKS 구축이 되지 않은 것이므로 꼭 확인 바랍니다.)
- 클러스터 접근 및 Node 상태 확인
[명령어]
$ aws eks --region
$ kubectl get nodes
3.1 Metric Server 설치
[명령어]
$ kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
$ kubectl get pods -A -o wide
$ kubectl get apiservice v1beta1.metrics.k8s.io -o json | grep -i -A 5 status
[top 확인]
$ kubectl run nginx-pod --image=nginx
$ kubectl get pods
$ kubectl top pods nginx-pod
$ kubectl delete pods nginx-pod
3.2 HELM 설치
[명령어]
$ curl https://raw.githubusercontent.com/helm/helm/master/scripts/get-helm-3 | bash
$ helm version --short
$ helm repo add stable https://charts.helm.sh/stable
$ helm completion bash >> ~/.bash_completion
$ source
3.3 application 배포
[명령어]
$ kubectl create deployment php-apache --image=us.gcr.io/k8s-artifacts-prod/hpa-example
$ kubectl set resources deploy php-apache --requests=cpu=200m
$ kubectl expose deploy php-apache --port 80
$ kubectl get pods -A --show-labels | grep -i php-apache
3.4 HPA 설정
[명령어]
$ kubectl autoscale deployment php-apache --max=10 --min=1 --cpu-percent=30
-> Pod단 CPU 30% 이상일 때 최소 갯수는 1개, 최대 갯수는 10개로 Scale Out하도록 구성
* HPA 수정 (CPU 및 최소 / 최대 갯수 변경시)
$ kubectl edit hpa php-apache(빨간색 네모 박스 수정)
3.5 부하테스트
[부하 전]
$ watch -d kubectl get deployment,replicaset,pods -o wide -A
[부하 후]
$ kubectl --generator=run-pod/v1 run -i --tty load-generator --image=busybox /bin/sh
$ wget -q -O - http://php-apache
→ OK! 떨어지면 정상
$ while true; do wget -q -O - http://php-apache; done
감사합니다.