我目前正在尝试为在Kubernetes中运行的应用程序设置一个水平pod自动定标器。HPA依赖于通过Prometheus适配器(https://github.com/kubernetes-sigs/prometheus-adapter)从Prometheus获取的外部指标。
适配器成功获取指标并将其提供给Kubernetes指标API,但metricLabelsMap为空,使得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适配器配置Map的摘录,它定义了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)的答案对我的问题有帮助。
1条答案
按热度按时间cvxl0en21#
我已经找到了我自己问题的答案。这里是给那些可能有同样问题的人的。
Prometheus和Kubernetes指标API中的指标使用 Camel 式大小写(例如sessionTotal)。即使HorizontalPodAutoscaler定义中使用了这些命名,HPA仍在幕后使用小写形式的指标名称(sessionTotal -〉sessiontotal),导致指标API响应404。
因此,如果您对指标名称使用驼峰式大小写,请注意此问题