Kubernetes HPA Object 메트릭 참조 구성 점검

측정 대상 객체와 실제로 확장할 워크로드를 구분해 구성하세요.

설명

HPA에서 type: Object 메트릭을 사용할 때는 describedObject, metric, target 정보가 올바르게 채워져 있어야 합니다. 측정 대상 객체는 복제본 수를 변경할 scaleTargetRef와 다른 역할입니다. 참조가 불완전하거나 메트릭 어댑터가 값을 제공하지 않으면 자동 확장이 기대대로 동작하지 않을 수 있습니다.

잠재적 영향

  • 부하 증가 시 필요한 시점에 복제본이 늘지 않을 수 있습니다.
  • 부적절한 목표값은 과도한 확장이나 부하 대응 실패를 유발할 수 있습니다.

해결 방법

  • Object 메트릭의 describedObject 이름·종류·API 버전과 metric 이름, target 유형·값을 실제 리소스와 맞추세요. 확장할 워크로드의 scaleTargetRef는 별도로 정확히 지정하세요.
  • 메트릭 어댑터와 단위, 최소·최대 복제본 수를 확인하고 부하 시험에서 HPA 조건·이벤트와 실제 확장을 검증하세요.

예시

참조할 Deployment와 Ingress, requests-per-second를 제공하는 메트릭 어댑터는 별도로 필요합니다. 목표값 10k와 복제본 1–10개는 설명용이며 실제 부하에 맞게 조정하세요.

변경 전

yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Object
      object:
        metric:
          name: requests-per-second
        target:
          type: Value
          value: 10k
        describedObject:
          apiVersion: networking.k8s.io/v1
          kind: Ingress

측정 대상 Ingress의 name이 없어 참조가 불완전합니다.

변경 후

yaml
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: php-apache
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: php-apache
  minReplicas: 1
  maxReplicas: 10
  metrics:
    - type: Object
      object:
        metric:
          name: requests-per-second
        describedObject:
          apiVersion: networking.k8s.io/v1
          kind: Ingress
          name: main-route
        target:
          type: Value
          value: 10k

측정 대상에 main-route를 지정합니다. 확장 대상은 별도 scaleTargetRef의 php-apache Deployment입니다.

참조