Kubernetes - 访问 Metric Server

Posted

技术标签:

【中文标题】Kubernetes - 访问 Metric Server【英文标题】:Kubernetes - access Metric Server 【发布时间】:2021-04-18 00:18:18 【问题描述】:

在 Kubernetes 官方文档中:

https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/

我们可以看到以下内容:

此示例需要运行 Kubernetes 集群和 kubectl,版本 1.2 或更高版本。 Metrics 服务器监控需要部署在集群中,通过 Metrics API 提供指标。 Horizo​​ntal Pod Autoscaler 使用此 API 来收集指标。要了解如何部署指标服务器,请参阅指标服务器文档。 要为 Horizo​​ntal Pod Autoscaler 指定多个资源指标,您必须拥有 Kubernetes 集群和 1.6 或更高版本的 kubectl。要使用自定义指标,您的集群必须能够与提供自定义指标 API 的 API 服务器通信。最后,要使用与任何 Kubernetes 对象无关的指标,您必须拥有 1.10 或更高版本的 Kubernetes 集群,并且您必须能够与提供外部 Metrics API 的 API 服务器通信。有关详细信息,请参阅 Horizo​​ntal Pod Autoscaler 用户指南。

为了验证我可以“使用自定义指标”,我运行了:

kubectl get metrics-server

并得到了结果:error: the server doesn't have a resource type "metrics-server"

请问如何验证“集群中需要部署Metrics server monitoring”?

谢谢

【问题讨论】:

【参考方案1】:

kubectl 背后的实际行为是将 API 请求发送到 Kubernetes API 服务器中的特定端点。 kubectl 附带了几个预定义的对象。但是如果你有一些没有用kubectl定义的端点,你可以使用标志--raw将请求发送到API服务器。

在您的情况下,您可以使用此命令检查内置指标。

> kubectl get --raw  /apis/metrics.k8s.io
"kind":"APIGroup","apiVersion":"v1","name":"metrics.k8s.io","versions":["groupVersion":"metrics.k8s.io/v1beta1","version":"v1beta1"],"preferredVersion":"groupVersion":"metrics.k8s.io/v1beta1","version":"v1beta1"

您将收到来自kubectl 的 JSON 响应。然后,您可以按照响应下的路径查询您的目标资源。就我而言,为了获得实际的指标,我需要使用这个命令。

> kubectl get --raw /apis/metrics.k8s.io/v1beta1/pods

对于这个指标端点,它指的是内置指标。它们是 CPU 和内存。如果要使用自定义指标,则需要根据您的应用程序安装 prometheus、prometheus 适配器和相应的导出器。对于自定义指标验证,您可以转到以下端点。

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

【讨论】:

以上是关于Kubernetes - 访问 Metric Server的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes 集群部署 Metrics Server 获取集群 Metric 数据

Kubernetes 集群部署 Metrics Server 获取集群 Metric 数据

使用来自 Kubernetes Metric 服务器的 PromQL (prometheus) 列出 Grafana 上的命名空间名称、命名空间年龄和状态

k8s安装之heapster与metric

Kubernetes 入口烧瓶应用程序

promethus 的 relabel_configs 和 metric_relabel_configs