Amazon EKS에서 Kubernetes Metrics Server 및 Horizontal Pod Autoscaler를 설정하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 4월 15일

Amazon Elastic Container Service for Kubernetes(Amazon EKS)에서 Kubernetes Metrics Server 및 HPA(Horizontal Pod Autoscaler)를 설정하려면 어떻게 해야 합니까?

​해결 방법

git clone https://github.com/kubernetes-incubator/metrics-server.git
cd metrics-server/

2.    Metrics Server 디렉터리 루트에서 Metrics Server를 설치하려면 다음 명령을 실행합니다.

kubectl create -f deploy/1.8+/

3.    Metrics Server가 실행 중인지 확인하려면 다음 명령을 실행합니다.

kubectl get pods -n kube-system

출력은 다음과 비슷해야 합니다.

$ kubectl get pods -n kube-system | grep metrics-server
metrics-server-85cc795fbf-79d72   1/1     Running   0          22s

php-apache 배포 및 서비스 생성

1.    php-apache 배포를 생성하려면 다음 명령을 실행합니다.

kubectl create deployment php-apache --image=k8s.gcr.io/hpa-example

2.    CPU 요청을 설정하려면 다음 명령을 실행합니다.

kubectl patch deployment php-apache -p='{"spec":{"template":{"spec":{"containers":[{"name":"hpa-example","resources":{"requests":{"cpu":"200m"}}}]}}}}'

중요: cpu에 대한 값을 올바르게 설정하지 않으면 포드의 CPU 사용률 지표가 정의되지 않고 HPA를 확장할 수 없습니다.

3.    배포를 서비스로 공개하려면 다음 명령을 실행합니다.

kubectl create service clusterip php-apache --tcp=80

4.    HPA를 생성하려면 다음 명령을 실행합니다.

kubectl autoscale deployment php-apache --cpu-percent=50 --min=1 --max=10

5.    HPA가 생성되었는지 확인하려면 다음 명령을 실행합니다.

kubectl get hpa

6.    앞서 생성한 배포에 연결할 포드를 생성하려면 다음 명령을 실행합니다.

kubectl run --generator=run-pod/v1 -i --tty load-generator --image=busybox /bin/sh

7.    1단계에서 사용한 네임스페이스의 포드에서 로드를 테스트하려면 다음 스크립트를 실행합니다.

while true; do wget -q -O- http://php-apache; done

참고: 로드 생성기 포드의 while loop 및 tty 세션을 종료하려면 CTRL + C를 사용하여 루프를 취소하고 CTRL + D를 사용하여 세션을 종료합니다.

8.    HPA에서 CPU 사용률 지표에 기반하여 포드를 확장하는 방법을 확인하려면 다음 명령을 실행합니다(다른 터미널 창에서 실행 권장).

kubectl get hpa -w

이제 Metrics Server가 가동되어 실행 중이며, 이를 사용하여 리소스 기반 지표를 가져올 수 있습니다.

9.    HPA 테스트에 사용된 리소스를 정리하려면 다음 명령을 실행합니다.

kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator

이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?