AutoScaler

dongbin_Shin·2022년 11월 15일
0

kubernetes

목록 보기
15/16

HPA (Horizontal Pod AutoScaler)

  • HPA를 Controller에 연결하면 HPA가 해당 Controller의 Pod 자원 사용량을 체크
  • 임계치 이상 자원을 사용하면 Controller의 replicas를 늘려 Pod을 scale out 시킴
  • 적절한 조건
    • 기동이 빠르게 되는 App에 적용해야 함
    • Stateless App에 적용해야 함

동작 원리

  1. Node마다 존재하는 Resource Estimator인 cAdvisor가 Container 리소스 사용량을 체크하고 kubelet은 cAdvisor로부터 리소스 정보를 수집
  2. metrics server(Pod)를 설치하면 각 Node의 kubelet으로부터 리소스 사용량을 종합하여 수집
  3. metrics server는 control plane의 kube-apiserver에 Resource API를 저장
  4. HPA는 kube-apiserver의 Resource API를 15초(default)마다 체크
  5. 리소스 사용량이 높아지면 replicaSet의 replicas를 증가시킴

HPA 요소

옵션설명비고
target리소스 체크할 Deployment(replicaSet) 지정
maxReplicas최대 replicas 갯수
minReplicas최소 replicas 갯수
metrics.type.Resouce리소스 사용량
metrics.type.Podspod와 관련된 정보addons 플러그인 필요
metrics.type.Object다른 자원의 사용량addons 플러그인 필요
metrics.type.name체크할 리소스 종류cpu, memory
metrics.type.target.typeHPA를 작동시킬 리소스 사용 기준Utilization, AverageValue, Value

VPA (Vertical Pod Autoscaler)

  • VPA를 Controller에 연결하면 VPA가 해당 Controller의 Pod 자원 사용량을 체크
  • 임계치 이상 자원을 사용하면 Pod의 자원 할당량을 늘려 Scale up 시킴
  • 적절한 조건
    • Stateful App에 적용
    • HPA와 함께 사용하면 안됨

CA (Cluster Autoscaler)

  • Scheduler가 어떤 Node에도 Pod을 추가할 수 없을 때 연결된 CA에게 생성 요청
  • CA는 사전에 연결된 Cloud Provider에 Node를 추가로 생성하여 Pod 생성 가능하도록 함
  • 기존 Node에 자원 여유가 생기면 CA가 만들었던 Node를 삭제하고 생성한 Pod을 기존 Node로 이동
profile
멋있는 백엔드 개발자

0개의 댓글