Kubernetes 外部指标的空 metricLabels 映射

问题描述 投票:0回答:1

我目前正在尝试为我在 Kubernetes 中运行的应用程序设置水平 pod 自动缩放器。 HPA 依赖于通过 Prometheus 适配器(https://github.com/kubernetes-sigs/prometheus-adapter)从 Prometheus 获取的外部指标。

指标由适配器获取并成功提供给 Kubernetes 指标 API,但 metricLabels 映射为空,使得 HPA 无法将正确的指标与正确的 pod 相关联。

例如。对指标 API 的查询

kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/namespaces/<namespace>/batchCommandsActive_totalCount/"

{"kind":"ExternalMetricValueList","apiVersion":"external.metrics.k8s.io/v1beta1","metadata":{},"items":[{"metricName":"batchCommandsActive_totalCount",**"metricLabels":{}**,"timestamp":"2023-02-10T11:38:48Z","value":"0"}]}

这些指标应该有三个与之关联的标签(主机名、本地节点和路径),以便正确的 pod 检索它们。

这里是 Prometheus 适配器配置映射的摘录,它定义了 Prometheus 适配器对 Prometheus 的查询

    - seriesQuery: '{__name__="batchCommandsActive_totalCount",hostname!="",localnode!="",path!=""}'
      metricsQuery: sum(<<.Series>>{<<.LabelMatchers>>}) by (name)
      resources:
        namespaced: false

感谢您的帮助!

到目前为止,StackOverflow 或教程(例如 https://github.com/kubernetes-sigs/prometheus-adapter/blob/master/docs/walkthrough.md)没有任何答案帮助解决了我的问题。

kubernetes prometheus hpa
1个回答
0
投票

我找到了我自己问题的答案。这是给那些可能有同样问题的人的。

Prometheus 和 Kubernetes 指标 API 中的指标使用驼峰式大小写(例如 sessionTotal)。即使在 HorizontalPodAutoscaler 定义中使用了这些命名,HPA 在幕后将指标名称(sessionTotal -> sessiontotal)小写化,导致指标 API 产生 404 响应。

因此,如果您使用驼峰式大小写作为指标名称,请注意此问题

© www.soinside.com 2019 - 2024. All rights reserved.