5-6. Pod의 오토스케일링을 위한 오브젝트, HPA

황인권·2025년 3월 4일

Kubernetes

목록 보기
36/37

HPA가 무엇인가?

  • 장애 상황을 경험해 보고, 이것을 Pod의 개수(Deployment에서 Replica의 개수를 조정)를 늘려서 해결했다.
    • 너무 많은 유저가 접속해서 각 Pod에서 감당할 수 있는 연산량의 한계가 온 것이고, 그래서 더 많은 Pod를 가동해 하나의 Pod가 처리해야 할 연산량을 줄여준 것이다.
  • 매번 이렇게 부하 정도(트래픽량)에 따라서 Replica의 개수를 조정해 주기는 너무 불편하다.
  • 그래서 존재하는 오브젝트가 바로 HPA(Horizontal Pod Autoscaler)!
    • Node를 Scale-in/out 해주는 클러스터 오토스케일러와 같이, HPA는 Pod를 Scale-in/out 해주는 쿠버네티스 오브젝트인 것이다.

HPA 직접 설정해보기

  1. metrics-server라는 쿠버네티스 플러그인을 설치해야 한다.
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
  1. HPA를 세팅하기 전, 모든 컨테이너에 resources.requests.cpu가 설정되어 있는지 확인한다.
  • HPA에서 CPU의 Utilization을 보겠다는 의미는 해당 Pod 내의 컨테이너들의 resources,requests.cpu의 총합을 기준으로 몇 퍼센트의 사용량을 맞추겠다는 것을 의미한다.
  • 즉, requests가 설정되어 있지 않은 컨테이너가 있는 경우 오류가 발생하게 된다.
  1. 다음과 같이 오브젝트의 사양을 작성하고 apply 해주자.
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: last-week-project-hpa
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: last-week-project-deployment
  minReplicas: 3
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50
profile
inkwon Hwang

0개의 댓글