Amazon EKS에서 Kubernetes Metrics Server 및 Horizontal Pod Autoscaler를 설정하려면 어떻게 해야 합니까?
최종 업데이트 날짜: 2021년 10월 12일
해결 방법
환경 설정
1. Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스를 생성합니다.
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/latest/download/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