07 Autoscaling Pod & Cluster

shin·2023년 6월 14일
0

Kubernetes

목록 보기
10/12
post-thumbnail

Amazon EKS로 웹 애플리케이션 구축하기

Autoscaling 이란?

  • Autoscaling Service
    • 사용자가 정의한 주기 및 이벤트에 따라 서버를 자동으로 생성하거나 삭제하는 기능
    • 애플리케이션은 트래픽에 따라 탄력적 대응이 가능해짐
  • 쿠버네티스에 있는 오토 스케일링 기능

    HPA(Horizontal Pod AutoScaler)

    • CPU 사용량 또는 사용자 정의 메트릭을 관찰하여 파드 개수를 자동으로 스케일링
      Cluster Autoscaler
    • EKS 클러스터 자체 자원이 모자라게 되는 경우

1) HPA를 사용하여 파드 스케일링 적용

  • HPA(Horizontal Pod Autoscaler) 컨트롤러
    • 매트릭 값에 따라 파드의 개수를 할당
    • 컨테이너에 필요한 리소스 양을 명시하고, 스케일할 조건을 작성해야 함

  • 쿠버네티스 metrics server를 생성

    • Metrics Server : 쿠버네티스 클러스터 전체의 리소스 사용 데이터를 집계함
  • flask-deployment.yaml 파일을 수정

    • 레플리카를 1로 설정, 컨테이너에 필요한 리소스 양 설정
cd /home/ec2-user/environment/manifests

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.$AWS_REGION.amazonaws.com/demo-flask-backend:latest
          imagePullPolicy: Always
          ports:
            - containerPort: 8080
          resources:
            requests:
              cpu: 250m
            limits:
              cpu: 500m
EOF
  • flask-deployment.yaml 파일을 적용하여 변경 사항 반영

  • HPA를 설정하기 위해 flask-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
  • flask-hpa.yaml 파일 반영

  • HPA 상태 확인

  • 파드의 변화량 파악

  • Cloud9에서 새로운 터미널을 추가로 생성하여 부하 테스트 진행

    • siege 도구를 통해 HTTP 부하 테스트 수행

profile
Backend development

0개의 댓글