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

최종 업데이트 날짜: 2020년 5월 18일

Amazon Elastic Kubernetes Service(Amazon EKS)에서 Kubernetes Metrics Server 및 Horizontal Pod Autoscaler(HPA)를 설정하고 싶습니다.

해결 방법

환경 설정

1.    Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성합니다.

2.    Amazon EC2 인스턴스에 kubectl을 설치합니다.

3.    EC2 인스턴스에 AWS CLI(명령줄 인터페이스)의 최신 버전을 설치구성합니다.

4.    Amazon EKS 클러스터를 가리키도록 kubeconfig 파일을 구성합니다.

Kubernetes Metrics Server 생성

1.    다음 명령을 실행하여 Metrics Server를 설치합니다.

kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/download/v0.3.6/components.yaml

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

kubectl get pods -n kube-system -l k8s-app=metrics-server

다음과 유사하게 출력됩니다.

kubectl get pods -n kube-system -l k8s-app=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에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?