brunch

You can make anything
by writing

C.S.Lewis

by Master Seo Jun 19. 2021

EKS 1탄-6. EKS Pod AutoScaling

실습 1탄 = 6/7

<1> HPA사용 서비스 부하시 EKS에서 Pod 자동 증가 설정

<2> 다음 편 보기 - 실습7. EKS 클러스터 AutoSacling

<3> 자원 삭제시 Autoscaling Group을 반드시 삭제, EC2도 없는지 확인 필수




<1> HPA사용 서비스 부하시 EKS에서 Pod 자동 증가 설정



1

EKS 는 Pod에 대해 자동 증가가 고려 되어야 한다. = 미리 IP가 여유 있게 가지고 있어야 한다.

EC2기반 EKS는 Cluster에 대해서도 자동 증가가 고려 되어야 한다.



2

echo ${AWS_REGION}


리전 변경 필요시

export AWS_REGION=us-east-1

export AWS_REGION=us-east-2

export AWS_REGION=us-west-1

export AWS_REGION=us-west-2


US East (N. Virginia)us-east-1

US East (Ohio)us-east-2

US West (N. California)us-west-1

US West (Oregon)us-west-2


echo ${AWS_REGION}



3

쿠버네티스 metrics server는 클러스터 전체의 리소스 사용 데이터를 집계합니다.


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


매트릭 파드가 생성된다.



2

확인

kubectl get deployment metrics-server -n kube-system

NAME             READY   UP-TO-DATE   AVAILABLE   AGE

metrics-server   1/1     1            1           2m39s




4

파일 수정


cat <<EOF> flask-deployment.yaml

---

apiVersion: apps/v1

kind: Deployment

metadata:

  name: demo-flask-backend

  namespace: default

spec:

  replicas: 1

  selector:

    matchLabels:

      app: demo-flask-backend

  template:

    metadata:

      labels:

        app: demo-flask-backend

    spec:

      containers:

        - name: demo-flask-backend

          image: $ACCOUNT_ID.dkr.ecr.ap-northeast-2.amazonaws.com/demo-flask-backend:latest

          imagePullPolicy: Always

          ports:

            - containerPort: 8080

          resources:

            requests:

              cpu: 250m

            limits:

              cpu: 500m

EOF



kubectl apply -f flask-deployment.yaml

deployment.apps/demo-flask-backend configured




5

HPA를 설정하기 위해, yaml 파일 생성


cat <<EOF> flask-hpa.yaml

---

apiVersion: autoscaling/v1

kind: HorizontalPodAutoscaler

metadata:

  name: demo-flask-backend-hpa

  namespace: default

spec:

  scaleTargetRef:

    apiVersion: apps/v1

    kind: Deployment

    name: demo-flask-backend

  minReplicas: 1

  maxReplicas: 5

  targetCPUUtilizationPercentage: 30

EOF


kubectl apply -f flask-hpa.yaml

horizontalpodautoscaler.autoscaling/demo-flask-backend-hpa created



6

kubectl autoscale deployment demo-flask-backend --cpu-percent=30 --min=1 --max=5

or

kubectl autoscale deployment demo-flask-backend --cpu-percent=10 --min=1 --max=5



7

kubectl get hpa

NAME                     REFERENCE                       TARGETS         MINPODS   MAXPODS   REPLICAS   AGE

demo-flask-backend       Deployment/demo-flask-backend   <unknown>/30%   1   6      0          7s

demo-flask-backend-hpa   Deployment/demo-flask-backend   <unknown>/30%   1    5  1       39s



8

cloud9 새창에서

kubectl get hpa -w

(seo-eks@myeks:default) [root@myeks-host ~]# kubectl get hpa -w

NAME                     REFERENCE                       TARGETS         MINPODS   MAXPODS   REPLICAS   AGE

demo-flask-backend       Deployment/demo-flask-backend   <unknown>/30%   1         5         1       

demo-flask-backend-hpa   Deployment/demo-flask-backend   <unknown>/30%   1         5         1       



9

cloud9 새창에서 부하 테스트


echo $(kubectl get ingress/backend-ingress -o jsonpath='{.status.loadBalancer.ingress[*].hostname}')/contents/aws


ab -c 200 -n 200 -t 30 http://k8s-default-backendi-xxxxxxx.us-east-1.elb.amazonaws.com/contents/aws


ab -c 200 -n 200 -t 30 http://$(kubectl get ingress/backend-ingress -o jsonpath='{.status.loadBalancer.ingress[*].hostname}')/contents/aws


// 로드 밸런서가 동작하는지 사전에 확인하자!!!

// 에러 발생




10

참고 !!!


aws 부하 테스트 가이드 = AWS에 미리 알려주고 부하 테스트해야 한다.

https://aws.amazon.com/ko/blogs/korea/how-to-loading-test-based-on-aws/



11

부하 테스트 명령어

ab -c 200 -n 200 -t 30 http://www.aaa.com




<2> 다음 편 보기 - 실습7. EKS 클러스터 AutoSacling


https://brunch.co.kr/@topasvga/1680



<3> 자원 삭제시 반드시 Autoscaling Group을 삭제, EC2도 없는지 확인 필수


1

EC2를 삭제 해도 Autoscaling 으로 다시 EC2가 생성되어 비용이 발생 된다.

자원 삭제시 반드시 Autoscaling Group을 삭제, EC2도 없는지 확인 필수





<10>   AWS EKS 실습 1


https://brunch.co.kr/@topasvga/1883


감사합니다.


        

매거진의 이전글 EKS 1탄-5. 콘솔에서 EKS Nodes 정보 보기
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari