Amazon Elastic Kubernetes Service(Amazon EKS)에 Kubernetes Metrics Server and Horizontal Pod Autoscaler(HPA)를 설치하고 싶습니다.
해결 방법
환경 설정하기
- Amazon Elastic Compute Cloud(Amazon EC2) 인스턴스가 있습니다.
- EC2 인스턴스에 kubectl을 설치합니다.
- EC2 인스턴스에 최신 버전의 AWS Command Line Interface(AWS CLI)를 설치하고 구성합니다.
- Amazon EKS 클러스터를 가리키도록 kubeconfig 파일을 구성합니다.
Kubernetes 지표 서버 생성
1.지표 서버를 설치하려면 다음 명령을 실행합니다.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
2.지표 서버가 실행 중인지 확인하려면 다음 명령을 실행합니다.
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 -i --tty load-generator --image=busybox /bin/sh
7.1단계에서 사용한 네임스페이스의 파드에 대한 부하를 테스트하려면 다음 스크립트를 실행합니다.
while true; do wget -q -O- http://php-apache; done
**참고:**로드 제너레이터 포드의 while 루프와 tty 세션을 종료하려면 Ctrl + C를 사용하여 루프를 취소합니다. 그런 다음 CTRL+ D를 사용하여 세션을 종료합니다.
8.HPA가 CPU 스케일 지표를 기반으로 포드를 확장하는 방법을 확인하려면 다음 명령을 실행합니다(다른 터미널 창에서 실행하는 것이 좋습니다).
kubectl get hpa -w
이제 지표 서버가 가동되어 실행 중이며, 이를 사용하여 리소스 기반 지표를 얻을 수 있습니다.
9.HPA 테스트에 사용되는 리소스를 정리하려면 다음 명령을 실행합니다.
kubectl delete hpa,service,deployment php-apache
kubectl delete pod load-generator
관련 정보
Horizontal Pod Autoscaling (Kubernetes 웹사이트)