설명
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 메트릭을 지정합니다. 실제 수집과 별도 확장 대상 설정이 필요합니다.