이 문서에서는 포드 또는 워크로드에서 부하 분산기로 하나 이상의 측정항목을 전송하는 방법을 설명합니다.
이러한 측정항목은 실행 중인 서비스 또는 애플리케이션에서 가져옵니다. 예를 들어 vLLM 엔진에서 노출된 측정항목을 참고하세요.
그러면 부하 분산기가 이 데이터를 사용률 기반 부하 분산과 함께 사용하여 워크로드의 균형을 더 효율적으로 조정할 수 있습니다. 예를 들어 이 기능을 사용하여 워크로드 사용량이 많은 리전을 모니터링한 다음 부하 분산기가 사용 가능한 리소스가 더 많은 리전으로 트래픽을 리디렉션하도록 허용할 수 있습니다. vLLM 예시에서 사용량을 추적하는 데 유용할 수 있는 측정항목은 vllm:gpu_cache_usage_perc입니다.
요구사항
포드 요구사항은 다음과 같습니다.
- GKE 1.35.1-gke.1396000 이상
- 게이트웨이 API가 사용 설정됨
- 성능 프로필과 함께 수평형 포드 자동 확장 사용
측정항목에 대한 요구사항은 다음과 같습니다.
- 측정항목은 게이트웨이에서 부하 분산하는 포드 아래의 HTTP 엔드포인트에서 액세스할 수 있어야 합니다. 기본 엔드포인트 경로는
/metrics입니다. - 측정항목은 Prometheus 표준에 따라 형식이 지정되어야 합니다.
부하 분산기에는 측정항목 이름에 제한사항이 있습니다. 예를 들어 이름은 64자(영문 기준)를 초과할 수 없습니다. 전체 제한사항 목록은
BackendServiceAPI 참조의backends[].customMetrics[].name필드에 관한 세부정보를 참고하세요.서비스의 측정항목이 이러한 제한사항을 준수하지 않는 경우
exportName필드를 사용하여 이름을 바꿀 수 있습니다.0~1 사이의 게이지 측정항목만 지원되며 1은 100% 사용률을 나타냅니다.
포드 라벨 선택기의 라벨 이름에는 특수문자를 포함할 수 없습니다. a~z 문자 (소문자 또는 대문자), 숫자, 하이픈, 밑줄만 지원됩니다.
클러스터당 최대 20개의 고유 측정항목을 노출할 수 있습니다. 다른 서비스에는 자체 한도가 있습니다. 예를 들어 부하 분산기 제한 및 요구사항을 참고하세요. 클러스터는 두 개 이상의 부하 분산기를 사용할 수 있습니다.
커스텀 측정항목을 기반으로 하는 GKE 사용률 기반 부하 분산 (UBB)
GKE 사용률 기반 부하 분산 (UBB)을 사용하여 부하 분산기가 백엔드 포드의 사용률을 기반으로 트래픽을 분산하도록 할 수 있습니다. CPU와 같은 일반 측정항목에 의존하는 대신 애플리케이션 성능과 더 관련성이 높은 맞춤 측정항목을 사용하도록 UBB를 구성할 수 있습니다.
GKE에서 커스텀 측정항목과 함께 UBB를 사용하는 경우 다음 제한사항이 적용됩니다.
- 게이트웨이 API만 해당: 게이트웨이 API를 사용하여 노출하는 서비스의 맞춤 측정항목에만 UBB를 사용할 수 있습니다. GKE는 GKE 게이트웨이 컨트롤러를 사용하여 Gateway API와 상호작용합니다. 서비스 및 인그레스 API는 맞춤 측정항목이 포함된 UBB를 지원하지 않습니다. 맞춤 측정항목은 서비스의 구성원인 포드에서 시작되어야 합니다.
- Cloud Service Mesh 없음: Cloud Service Mesh를 사용하는 경우 맞춤 측정항목과 함께 UBB를 사용할 수 없습니다.
- 지원되지 않는 부하 분산기: 외부 패스 스루 네트워크 부하 분산기 및 외부 프록시 네트워크 부하 분산기에서는 맞춤 측정항목과 함께 UBB를 사용할 수 없습니다.
부하 분산을 위한 측정항목 노출
노출할 측정항목을 선택합니다. 서버에서 노출하고 이전 섹션에 나열된 요구사항을 충족하는 측정항목을 선택할 수 있습니다. 이 예시에서는
queue_depth_util이라는 맞춤 측정항목을 사용합니다.측정항목 및 포드에 해당하는 세부정보를 대체하여 다음 맞춤 리소스를 추가합니다.
apiVersion: autoscaling.gke.io/v1beta1 kind: AutoscalingMetric metadata: name: NAME namespace: NAMESPACE spec: metrics: - pod: selector: matchLabels: APP_LABEL_NAME: APP_LABEL_VALUE containers: - endpoint: port: METRIC_PORT path: METRIC_PATH metrics: - gauge: name: METRIC prometheusMetricName: METRIC_PROMETHEUS_NAME loadBalancing: enabled: true워크로드에 맞게 다음을 바꿉니다.
NAME: AutoscalingMetric 객체의 이름입니다.NAMESPACE: 포드가 있는 네임스페이스입니다.APP_LABEL_NAME및APP_LABEL_VALUE: 측정항목을 내보내는 포드와 일치하는 라벨 이름과 값입니다.METRIC_PORT: 포트 번호입니다.METRIC_PATH: 측정항목의 경로입니다. 서비스 또는 애플리케이션에서 사용하는 경로를 확인합니다. 이 경로는 보통/metrics입니다.METRIC: 노출할 측정항목의 이름입니다. 이름은^[a-z]([a-z0-9_-]*[a-z0-9])?정규 표현식과 일치해야 하며 길이는 63자(영문 기준) 이하여야 합니다. 즉, 첫 문자는 소문자이고 그 다음에 오는 모든 문자는 하이픈, 밑줄, 소문자, 숫자여야 합니다. 단, 마지막 문자는 영문자 또는 숫자여야 합니다.선택사항:
METRIC_PROMETHEUS_NAME: 포드에서 노출된 Prometheus 측정항목 이름입니다. 이 필드를 사용하여 측정항목의 이름을 바꿀 수 있습니다. 예를 들어 포드에서 노출된 측정항목 이름이 부하 분산기에서 설정한 이름 제한을 준수하지 않는 경우에 이름을 바꿀 수 있습니다.전체 제한사항 목록은
BackendServiceAPI 참조의backends[].customMetrics[].name필드에 관한 세부정보를 참고하세요.
다음 명령어를 사용하여 매니페스트를 적용합니다.
kubectl apply -f FILE_NAME.yamlFILE_NAME를 YAML 파일 이름으로 바꿉니다.커스텀 리소스를 추가하면 측정항목이 자동 확장 API로 푸시됩니다. 측정항목은 몇 초마다 읽혀 부하 분산기로 전송됩니다.
부하 분산 목적으로 이 신호를 사용하려면
GCPBackendPolicy를 제공하세요. 예를 들면 다음과 같습니다.kind: GCPBackendPolicy apiVersion: networking.gke.io/v1 metadata: name: my-backend-policy spec: targetRef: group: "" kind: Service name: store-v1 default: balancingMode: CUSTOM_METRICS customMetrics: - name: gke.named_metrics.queue_depth_util dryRun: false
Prometheus에서 보고하는 측정항목은 다른 이름 지정 표준을 따릅니다.
부하 분산에 대한 측정항목이 보고되면 GKE 측정항목 에이전트는 BackendService API 요구사항을 준수하기 위해 내부적으로 gke.named_metrics.를 접두사로 추가합니다.
두 번째 측정항목을 노출하려면 동일한 단계에 따라 다른 맞춤 리소스를 만드세요.
이제 부하 분산기에 측정항목을 노출했으므로 이러한 측정항목을 사용하도록 부하 분산기를 구성할 수 있습니다. 자세한 내용은 커스텀 측정항목을 사용하도록 부하 분산기 구성을 참고하세요.
부하 분산기 사용에 대한 자세한 내용은 GKE 서비스의 사용률 기반 부하 분산 구성을 참고하세요.
부하 분산기에 노출된 측정항목 문제 해결
측정항목이 부하 분산기에 올바르게 노출되는지 확인하려면 다음을 수행하면 됩니다.
- GKE 측정항목 에이전트에서 로그를 확인합니다. 측정항목을 노출하려고 할 때 오류가 발생한 경우 로그에 오류가 있다고 표시될 수 있습니다. 오류를 찾는 방법에 관한 자세한 내용은 시스템 측정항목 문제 해결을 참고하세요.
- 드라이 런 모드에서 부하 분산기를 사용하여 수신되는 모든 측정항목을 확인할 수 있습니다.
dryRun플래그를 사용하여 측정항목을 테스트하는 방법을 자세히 알아보려면 커스텀 측정항목을 사용하도록 부하 분산기 구성을 참고하세요.
다음 단계
- 사용률 기반 부하 분산에 관한 자세한 내용은 GKE 서비스의 사용률 기반 부하 분산기 정보를 참고하세요.
- GKE 서비스의 사용률 기반 부하 분산을 구성하는 방법을 알아봅니다.