이 문서에서는 포드 또는 워크로드에서 부하 분산기로 하나 이상의 측정항목을 전송하는 방법을 설명합니다.
이러한 측정항목은 실행 중인 서비스 또는 애플리케이션에서 가져옵니다. 예를 들어 vLLM 엔진에서 노출하는 측정항목을 참고하세요.
그러면 부하 분산기는 이 데이터를
사용률 기반 부하 분산
과 함께 사용하여 워크로드의 부하를 더 효율적으로 분산할 수 있습니다. 예를 들어 이 기능을 사용하여 워크로드 사용량이 많은 리전을 모니터링한 후 부하 분산기가 사용 가능한 리소스가 더 많은 리전으로 트래픽을 리디렉션하도록 허용할 수 있습니다. vLLM 예시에서 사용률을 추적하는 데 유용한 측정항목은
입니다
vllm:gpu_cache_usage_perc.
요구사항
포드의 요구사항은 다음과 같습니다.
- GKE 1.35.1-gke.1396000 이상
- 게이트웨이 API가 사용 설정되어 있습니다.
- 성능 프로필과 함께 수평형 포드 자동 확장 사용
측정항목의 요구사항은 다음과 같습니다.
- 측정항목은 게이트웨이에서 부하 분산 중인 포드 아래의 HTTP 엔드포인트에서 액세스할 수 있어야 합니다. 기본 엔드포인트 경로는
/metrics입니다. - 측정항목은 Prometheus 표준에 따라 형식이 지정되어야 합니다.
부하 분산기에는 측정항목 이름에 제한사항이 있습니다. 예를 들어 이름은 64자를 초과할 수 없습니다. 제한사항의 전체 목록은
BackendService의 API 참조에서backends[].customMetrics[].name필드에 관한 세부정보를 참고하세요.서비스의 측정항목이 이러한 제한사항을 준수하지 않는 경우
exportName필드를 사용하여 이름을 바꿀 수 있습니다.0~1 사이의 게이지 측정항목만 지원되며 1은 100% 사용률을 나타냅니다.
포드 라벨 선택기의 라벨 이름에는 특수문자가 포함되어서는 안 됩니다. a~z 문자 (대문자 또는 소문자), 숫자, 하이픈, 밑줄만 지원됩니다.
클러스터당 최대 20개의 고유 측정항목을 노출할 수 있습니다. 다른 서비스에는 자체 한도가 있습니다. 예를 들어 부하 분산기의 한도 및 요구사항을 참고하세요. 클러스터는 둘 이상의 부하 분산기를 사용할 수 있습니다.
커스텀 측정항목을 기반으로 하는 GKE 사용률 기반 부하 분산 (UBB)
GKE 사용률 기반 부하 분산 (UBB)을 사용하여 부하 분산기가 백엔드 포드의 사용률에 따라 트래픽을 분산하도록 할 수 있습니다. CPU와 같은 일반 측정항목에 의존하는 대신 애플리케이션 성능과 더 관련이 있는 커스텀 측정항목을 사용하도록 UBB를 구성할 수 있습니다.
GKE에서 커스텀 측정항목과 함께 UBB를 사용하는 경우 다음 제한사항이 적용됩니다.
- 게이트웨이 API만 해당: 게이트웨이 API를 사용하여 노출하는 서비스 에만 커스텀 측정항목과 함께 UBB를 사용할 수 있습니다. GKE는 GKE 게이트웨이 컨트롤러를 사용하여 게이트웨이 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 측정항목 이름입니다. 예를 들어 포드에서 노출하는 측정항목 이름이 부하 분산기에서 설정한 이름 제한사항을 준수하지 않기 때문에 이 필드를 사용하여 측정항목 이름을 바꿀 수 있습니다.제한사항의 전체 목록은
BackendService의 API 참조에서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 서비스의 사용률 기반 부하 분산을 구성하는 방법을 알아보세요.