Hpa 没有获取现有的自定义指标?

Posted

技术标签:

【中文标题】Hpa 没有获取现有的自定义指标?【英文标题】:Hpa not fetching existing custom metric? 【发布时间】:2020-01-28 18:45:24 【问题描述】:

我使用mongodb-exporter 通过prometheus 存储/查询指标。我已经设置了一个自定义指标服务器并为其存储值。

这是prometheus-exportercustom-metric-server兼容的证据。

查询:

kubectl get --raw "/apis/custom.metrics.k8s.io/v1beta1/namespaces/monitoring/pods/*/mongodb_mongod_wiredtiger_cache_bytes"

结果:

"kind":"MetricValueList","apiVersion":"custom.metrics.k8s.io/v1beta1","metadata":"selfLink":"/apis/custom.metrics.k8s.io/v1beta1/namespaces/monitoring/pods/%2A/mongodb_mongod_wiredtiger_cache_bytes","items":["describedObject":"kind":"Pod","namespace":"monitoring","name":"mongo-exporter-2-prometheus-mongodb-exporter-68f95fd65d-dvptr","apiVersion":"/v1","metricName":"mongodb_mongod_wiredtiger_cache_bytes","timestamp":"TTTTT","value":"0"]

就我而言,当我从 mongo 导出器为此自定义指标创建 hpa 时,hpa 会将此错误返回给我:

failed to get mongodb_mongod_wiredtiger_cache_bytes utilization: unable to get metrics for resource mongodb_mongod_wiredtiger_cache_bytes: no metrics returned from resource metrics API

我的案件的主要问题是什么?我检查了所有配置,流程看起来不错,但我的错误在哪里。

帮助

谢谢:)

【问题讨论】:

你能提供你的部署 YAML 吗? 为应用程序或其他与prometheus或metric server相关的组件部署yaml? YAMLS:1. mongodb-exporter,2. prometheus-exporter,3. HPA。您是否使用一些教程创建了这一切?您能否提供部署所有内容的步骤。 嗨@PjoterS 我已经通过启用外部指标api服务器处理了问题 如果您找到了解决方案,请写下您所做的作为答案并接受它。对于可能有类似问题的人来说,它会更加明显。 【参考方案1】:

您在 cmets 中写道您已启用 external.metrics,但在原始问题中您遇到了 custom.metrics 的问题

简而言之:

metrics 仅支持 CPU 或内存等基本指标。 custom.metrics 允许您将基本指标扩展到所有 Kubernetes 对象(http_requests、pod 数量等)。 external.metrics 允许收集不是 Kubernetes 对象的指标:

外部指标允许您根据任何 监控系统中可用的指标。只需提供一个指标 如上所述,带有名称和选择器的块,并使用外部指标 键入而不是 Object

更详细的说明请查看this doc。

Minikube

要验证custom.metrics 是否已启用,您需要执行以下命令并检查是否可以看到任何metrics-server... pod。

$ kubectl get pods -n kube-system
...
metrics-server-587f876775-9qrtc    1/1     Running   4          5d1h

第二种方法是检查minikube是否启用了metrics-server

$ minikube addons list
...
- metrics-server: enabled

如果它被禁用,只需执行

$ sudo minikube addons enable metrics-server
✅  metrics-server was successfully enabled

GKE

目前在 GKE 中 heapstermetrics-server 默认开启,但默认不支持 custom.metrics。 您必须安装prometheus adapterstackdriver

Kubeadm

Kubeadm 开头不包含heapstermetrics server。为了方便安装,可以使用this YAML。

稍后你必须安装prometheus adapter

应用 custom.metrics

MinikubeKubeadmGKE 也一样。

申请custom.metrics 的最简单方法是通过Helm 安装prometheus adapter。

helm 安装后你会看到 note:

NOTES:
my-release-prometheus-adapter has been deployed.
In a few minutes you should be able to list metrics using the following command(s):

  kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1

作为附加信息,您可以使用jq 获得更多用户友好的输出。

kubectl get --raw /apis/custom.metrics.k8s.io/v1beta1 | jq .

【讨论】:

以上是关于Hpa 没有获取现有的自定义指标?的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes AWS Cloudwatch 适配器未获取 EKS HPA 自动缩放的自定义指标值

为啥 Kubernetes HPA 转换自定义指标?

Kubernetes HPA(带有自定义指标)扩展策略

具有自定义指标的 HPA

使用 Prometheus 适配器的 Horizo​​ntal Pod Autoscaler (HPA) 自定义指标(单位是如何定义的?)

GKE K8 HPA 无法获取堆栈驱动程序指标