HPA Object 메트릭 참조 구성 점검

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

설명

HPA에서 Object 메트릭을 사용하려면 측정 대상인 described_object, 메트릭 이름과 목표값이 올바르게 구성되어야 합니다. 측정 대상 객체는 복제본 수를 변경할 scale_target_ref와 다른 역할입니다. Resource나 Pods 등 다른 메트릭 유형도 요구사항에 맞게 사용할 수 있습니다.

참조 대상이 존재하더라도 메트릭 어댑터가 해당 값을 제공하지 않으면 자동 확장에 사용할 수 없습니다. 실제 수집과 확장 상태를 함께 확인하세요.

잠재적 영향

  • 잘못된 참조나 사용할 수 없는 메트릭 때문에 필요한 확장이 일어나지 않을 수 있습니다.
  • 부적절한 목표값은 과도한 확장이나 부하 대응 실패를 유발할 수 있습니다.

해결 방법

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

예시

이전 HPA·Ingress 형식의 부분 예제입니다. 현재 환경에서는 kubernetes_horizontal_pod_autoscaler_v2와 지원되는 Ingress API를 사용하세요. 필수 scale_target_ref와 대상 워크로드·Ingress·메트릭 어댑터는 생략했습니다. 50–100개 복제본과 latency 100은 설명용 값입니다.

변경 전

hcl
resource "kubernetes_horizontal_pod_autoscaler" "example" {
  metadata {
    name = "test"
  }

  spec {
    min_replicas = 50
    max_replicas = 100

    metric {
      type = "Object"

      object {
        target {
          type  = "Value"
          value = "100"
        }
      }
    }
  }
}

변경 후

hcl
resource "kubernetes_horizontal_pod_autoscaler" "example" {
  metadata {
    name = "test"
  }

  spec {
    min_replicas = 50
    max_replicas = 100

    metric {
      type = "Object"

      object {
        metric {
          name = "latency"
        }

        described_object {
          name        = "main-route"
          api_version = "networking.k8s.io/v1beta1"
          kind        = "Ingress"
        }

        target {
          type  = "Value"
          value = "100"
        }
      }
    }
  }
}

설명:

  • 변경 전: Object 메트릭의 이름과 측정 대상 참조가 빠져 있습니다.
  • 변경 후: 측정 대상 Ingress와 latency 메트릭을 지정합니다. 실제 수집과 별도 확장 대상 설정이 필요합니다.

참조