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

Hpa not fetching existing custom metric?

我通过 prometheusmongodb-exporter 用于 store/query 指标。我已经设置了一个自定义指标服务器并为其存储值。

这就是 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 return 给我这个错误:

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

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

帮助

谢谢 :)

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

的问题

简而言之:

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

External metrics allow you to autoscale your cluster based on any metric available in your monitoring system. Just provide a metric block with a name and selector, as above, and use the External metric type instead of 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 后,您将能够看到注释:

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 .