Hpa 不获取现有的自定义指标?
Hpa not fetching existing custom metric?
我通过 prometheus
将 mongodb-exporter
用于 store/query 指标。我已经设置了一个自定义指标服务器并为其存储值。
这就是 prometheus-exporter
和 custom-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 heapster
和 metrics-server
默认开启,但默认不支持 custom.metrics
。
您必须安装 prometheus adapter
或 stackdriver
.
Kubeadm
Kubeadm 不包含 heapster
或 metrics server
开头。为了安装方便,可以使用this YAML.
稍后您必须安装 prometheus adapter
。
应用custom.metrics
Minikube
、Kubeadm
、GKE
也一样。
应用 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 .
我通过 prometheus
将 mongodb-exporter
用于 store/query 指标。我已经设置了一个自定义指标服务器并为其存储值。
这就是 prometheus-exporter
和 custom-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 heapster
和 metrics-server
默认开启,但默认不支持 custom.metrics
。
您必须安装 prometheus adapter
或 stackdriver
.
Kubeadm
Kubeadm 不包含 heapster
或 metrics server
开头。为了安装方便,可以使用this YAML.
稍后您必须安装 prometheus adapter
。
应用custom.metrics
Minikube
、Kubeadm
、GKE
也一样。
应用 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 .