Container/Kubernetes

[Kubernetes] 쿠버네티스 HPA 개념과 구성 (HorizontalPodAutoscaler, 오토스케일러)

Nirsa 2020. 4. 10. 12:02
반응형

 

  • 쿠버네티스 HPA 이란?

HPA(HorizontalPodAutoscaler)는 CPU, Memory 등 리소스가 정해둔 임계치를 초과할 경우 자동으로 스케일 아웃(Pod의 리소스를 증가 시키지 않고, Pod 개수 자체를 늘려줌) 해주는 기능을 갖추고 있습니다. HPA 컨트롤러가 리소스를 체크하며 정해둔 replicas 수에 맞춰 Pod를 줄이거나 늘려줍니다.

아래 리소스들을 이용하여 HPA를 구성할 수 있습니다.

  • Deployment
  • Replicaset
  • StatefulSet
  • Recplication Controller

,

  • 쿠버네티스 HPA 구조

위와 같은 과정을 통해 replicaset을 배포하고, 모든 Pod의 사용률 총합을 구한 뒤 HPA 매니페스트 파일에 지정한 사용률을 나눠 배포할 replicas 개수를 구합니다.

 

  • 쿠버네티스 HPA 구성 및 동작 확인

아래와 같은 HPA 매니페스트 파일을 이용하여 확인할 수 있습니다.

apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
  name: hpa-test
spec:
  minReplicas: 1  # 최소 replicas 개수
  maxReplicas: 5  # 최대 replicas 개수
  metrics:
  - resource:
      name: cpu  # HPA를 구성할 리소스(CPU, MEM 등)
      targetAverageUtilization: 30  # CPU 사용률이 30% 이상일 경우 생성
    type: Resource  # 리소스 타입 선언
  scaleTargetRef:  # 스케일 아웃할 타겟 설정
    apiVersion: apps/v1
    kind: Deployment  #  스케일 아웃할 타겟의 종류 (deployment, replicaset 등)
    name: deployment-hpa  #  스케일 아웃할 타겟의 네임

저의 경우 기존에 부하를 유발시키는 deployment-hpa 라는 이름을 가진 Deployment가 있었습니다. 위의 코드를 작성한 후 apply 하면 리소스에 따라 자동으로 스케일 아웃해주는 것을 확인할 수 있습니다.

 

deployment-hpa는 replicas를 2로 지정해둔 상태 입니다.

 

deployment-hpa에서 CPU 사용률 부하가 발생하며 아래와 같이 HPA로 인해 자동으로 스케일 아웃된것을 확인할 수 있었습니다. HPA 매니페스트 파일에 maxReplicas: 5를 설정 했으므로 최대 5개까지 증가 되었습니다.

 

반응형