[Cloud Native Architecture] Horizontal Pod Autoscaler, HPA

IMKUNYOUNG·2024년 7월 29일
0

KCNA

목록 보기
33/56

Horizontal Pod Autoscaler (HPA)에 대해 알아보겠습니다. HPA는 수평적으로 pod를 확장하는 역할을 합니다. 이는 로드가 증가하면 시스템에 더 많은 pod를 배포하고, 로드가 감소하면 pod를 삭제하는 것을 의미합니다.

Horizontal Pod Autoscaler의 역할

HPA는 Kubernetes의 여러 컨트롤러 중 하나로, 일반적으로 pod는 배포(deployment)로 생성됩니다. 따라서 HPA의 주요 역할은 배포 내의 복제본(replica) 수를 조절하는 것입니다. 로드가 증가하면 배포의 복제본 수를 늘리고, 로드가 감소하면 복제본 수를 줄입니다.

리소스 사용량 모니터링

HPA가 효율적으로 작동하려면 리소스 사용량을 이해할 수 있어야 합니다. 이를 위해 메트릭 서버(metrics server)를 통해 리소스 사용량을 모니터링합니다. 매트릭 서버는 클러스터 내의 노드와 pod에서 리소스 사용량 정보를 지속적으로 모니터링하고 수집합니다. 이를 통해 HPA는 pod가 리소스를 어떻게 소비하는지 식별할 수 있습니다.

실습 예제

여기에는 특정 이미지와 CPU 제한이 500m으로 설정된 배포(deployment)가 있습니다. 이 배포를 대상으로 하는 HPA 객체를 생성해보겠습니다.

apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
  name: myapp-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: myapp
  minReplicas: 1
  maxReplicas: 10
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 50

위의 YAML 파일은 HPA를 정의합니다. 여기서 apiVersionautoscaling/v2beta2이고, kindHorizontalPodAutoscaler입니다. scaleTargetRef 섹션에서 특정 배포인 myapp을 타겟으로 지정하고 있습니다. 최소 복제본 수는 1, 최대 복제본 수는 10으로 설정되어 있으며, CPU 사용률을 기준으로 확장 및 축소합니다.

HPA는 평균 CPU 사용률 50%를 목표로 하여 myapp 배포의 복제본 수를 조정합니다.

HPA 상태 확인

HPA가 생성된 후에는 kubectl get hpa 명령을 통해 HPA의 상태를 확인할 수 있습니다. 이 명령을 실행하면 아래와 같은 출력이 나타납니다.

$ kubectl get hpa
NAME        REFERENCE              TARGETS    MINPODS   MAXPODS   REPLICAS   AGE
myapp-hpa   Deployment/myapp       40%/50%    1         10        2          5m
  • Targets 열은 현재 및 평균 CPU 사용량을 목표 사용률의 백분율로 표시합니다.
  • MinpodsMaxpods 열은 HPA가 유지할 최소 및 최대 pod 수를 보여줍니다.
  • Replicas 열은 현재 복제본 수를 나타내며, Age 열은 HPA가 실행된 시간을 나타냅니다.

마치며

Horizontal Pod Autoscaler는 Kubernetes에서 애플리케이션의 가용성과 성능을 유지하는 데 중요한 역할을 합니다. 이를 통해 로드 변화에 따라 자동으로 pod 수를 조절하여 효율적인 리소스 사용을 보장할 수 있습니다.

0개의 댓글