公开负载平衡器的自定义指标

本部分介绍了如何将一个或多个指标从 Pod 或工作负载发送到负载均衡器。

这些指标来自您正在运行的服务或应用。例如,请参阅 vLLM 引擎公开的指标

然后,负载均衡器可以将此数据与基于利用率的负载均衡搭配使用,以更高效地平衡工作负载。例如,您可以使用此功能监控工作负载使用量较高的区域,然后允许负载均衡器将流量重定向到资源更充足的区域。在 vLLM 示例中,可用于跟踪利用率的指标是 gpu_cache_usage_perc

要求

Pod 的要求如下。

指标的要求如下。

  • 指标必须可通过 HTTP 端点访问。
  • 指标的格式必须符合 Prometheus 标准
  • 负载平衡器对指标名称有限制。例如,名称不得超过 64 个字符。如需查看完整的限制列表,请参阅 BackendService 的 API 参考文档中有关字段 backends[].customMetrics[].name 的详细信息。

    如果服务的指标不符合这些限制,您可以使用 exportName 字段重命名该指标。

  • 仅支持介于 0 到 1 之间的测量指标,其中 1 表示利用率为 100%。

  • 系统会忽略指标标签,因此无法使用指标标签来区分指标。确保工作负载不会通过多个标签公开同一指标。

  • 每个集群最多可公开 10 个指标。其他服务有自己的限制。例如,请参阅负载平衡器的限制和要求。 请注意,一个集群可以使用多个负载均衡器。

公开负载均衡的指标

  1. 选择要公开的指标。您可以选择服务器公开的任何指标,但该指标还必须满足上一部分中列出的要求。

  2. 添加以下自定义资源,替换特定于您的指标和 Pod 的详细信息。

    apiVersion: autoscaling.gke.io/v1beta1
    kind: AutoscalingMetric
    metadata:
      name: NAME
      namespace:NAMESPACE
    spec:
      selector:
        matchLabels:
          name: APP_LABEL_NAME
      endpoints:
      - port: METRIC_PORT
        path: METRIC_PATH
        metrics:
        - name: METRIC
          exportName: METRIC_NEW_NAME
    

    替换以下内容以与您的工作负载相符:

    • NAME:AutoscalingMetric 对象的名称。
    • NAMESPACE:Pod 所在的命名空间。
    • APP_LABEL_NAME:用于 Pod 的标签。
    • METRIC_PORT:端口号。
    • METRIC_PATH:指标的路径。验证您的服务或应用使用的路径;此路径通常为 /metrics
    • METRIC:您要公开的指标的名称。
    • 可选:METRIC_NEW_NAME:您可以使用此字段重命名指标。如果指标名称不符合负载均衡器设置的名称限制,请使用此字段将其重命名为有效名称。

      如需查看完整的限制列表,请参阅 BackendService 的 API 参考文档中有关字段 backends[].customMetrics[].name 的详细信息。

  3. 使用以下命令应用资源:

    kubectl apply -f FILE_NAME.yaml
    

    FILE_NAME 替换为相应 YAML 文件的名称。

    添加自定义资源后,指标会推送到自动扩缩 API。系统会每隔几秒读取一次该指标,并将其发送到负载平衡器。

如需公开第二个指标,请按照相同的步骤创建另一个自定义资源。

现在,您已向负载均衡器公开了指标,接下来可以配置负载均衡器以使用这些指标。如需了解详情,请参阅将负载均衡器配置为使用自定义指标

如需详细了解如何使用负载均衡器,请参阅为 GKE 服务配置基于利用率的负载均衡

排查向负载均衡器公开的指标

如需验证指标是否已正确向负载均衡器公开,您可以执行以下操作:

  • 验证 GKE 指标代理中的日志。如果在尝试公开指标时出错,日志可能会表明存在错误。如需详细了解如何查找错误,请参阅排查系统指标问题
  • 您可以使用处于试运行模式的负载均衡器来查看其接收的所有指标。如需详细了解如何使用 dryRun 标志测试指标,请参阅将负载均衡器配置为使用自定义指标

后续步骤