본문 바로가기
CICD

[Kubernetes] Autoscaler(HPA)

by 장중앙 2022. 2. 17.

Autoscaler

쿠버네티스는 리소스 부족 현상을 해결하기 위해 사용

용도에 따라 몇 가지 오토 스케일러를 제공

  1. HPA(Horizontal Pod Autoscaler)
  2. VPA(Vertical Pod Autoscaler)
  3. CA(Cluster Autoscaler)

 

1. HPA

  • 수평적 증/감
    • Pod의 리소스 상태를 감지하면서 트래픽이 증가하면 Pod의 갯수를 증가(Scale Out)하여 트래픽을 분산
    • 다시 트래픽이 감소하면 생성된 Pod를 삭제(Scale In)

  • 기동이 빨라야하는 App에 사용 -> 장애 복구를 위한 기능이기 때문에 App 자체의 기동이 빨라야함
  • Stateless의 경우에만 사용 
    • StateFul의 경우에는 어떤 Pod를 Scale Out 해야하는 지 모르기 때문 -> 사용하기 어려움

 

2. VPA

  • 수직적 증/감
    • Pod의 리소스 상태를 감지, 위험한 상태에 Pod를 재가동하면서 리소스를 증가(Scale Up)
    • 리소스가 안정화(기준 이하) 리소스를 감소(Scale Down)

  • Stateful일 때 사용
  • 하나의 Controller에 HPA와 함께 사용 불가능 -> 둘 다 작동 X 

 

3. CA

  • Local에 모든 Worker Node에서 리소스가 소모되었을 경우 Cloud에 요청하여 Cloud Provider에 Worker Node와 Pod를 생성
  • Local에 여유자원이 생기면 Scheduler가 노드를 삭제하도록 요청, Cloud Provider에 있는 노드가 삭제되고 Pod가 로컬 노드로 옮겨짐

 

* 이러한 3개의 Auto Scaler가 존재하며, 이 중 대중적으로 쓰이는 HPA에 대해 다룸

 

HPA의 구성

minReplicas : 최소 Replicas 갯수

maxReplicas : 최대 Replicas 갯수

 

type : 리소스 타입 지정 ex) resource

name : HPA를 구성할 리소스(CPU, Mem 등) 판단 조건을 위한 리소스

target.type : 어떤 조건으로 증가 시킬지(일반적으로 utilization)

target.averageUtilization : Pod의 requests를 기준으로 Pod의 평균자원량, 초과시 증가

 


 

'CICD' 카테고리의 다른 글

docker-compose  (0) 2023.04.08
Docker와 DockerFile  (2) 2023.04.08
[Kubernetes] Ingress(Controller)  (0) 2022.02.08
[Kubernetes] StatefulSet(Controller)  (0) 2022.02.08
[Kubernetes] RBAC, Role, RoleBinding(Authorization)  (0) 2022.01.30

댓글