Prometheus 与 Kubernetes v1.16 不兼容

Posted

技术标签:

【中文标题】Prometheus 与 Kubernetes v1.16 不兼容【英文标题】:Prometheus is not compatible with Kubernetes v1.16 【发布时间】:2020-02-21 17:49:37 【问题描述】:

我安装了 stable/prometheus helm chart,并在 helm/charts#17268 提出了一些小改动,以使其与 Kubernetes v1.16 兼容

安装后,Kubernetes grafana 仪表板均未显示正确的值。我正在使用 8769 (https://grafana.com/grafana/dashboards/8769) 仪表板,它提供了有关 cpu、内存、网络等的许多信息。该仪表板在较旧的 k8s 版本上正常工作,但在 v1.16 上没有显示任何结果。我还随机尝试了一些其他仪表板(8588、6879、10551),但它们要么只显示每个 pod 的请求资源,而不是实时使用情况,要么什么也不显示。

这些仪表板的作用是向 prometheus 发送 promql 查询并获取结果。例如,这是来自 8769 仪表板的 cpu 使用情况的 promql 查询:

sum (rate (container_cpu_usage_seconds_totalid!="/",namespace=~"$Namespace",pod_name=~"^$Deployment.*$"[1m])) by (pod_name)

我不知道我是否必须更改promql或问题出在其他地方。

【问题讨论】:

你能检查一下prometheus目标源状态是否为Up吗?您还可以通过运行简单的查询(如container_cpu_usage_seconds_total)从 Prometheus UI 进行检查。 一切正常运行,问题在于 k8s v1.16 中引入的新变化。 【参考方案1】:

Kubernetes 1.16 删除了标签 pod_name 和 container_name cAdvisor 指标、pod 和容器的副本。

您需要在 Grafana 仪表板 JSON 模型中更改 pod_name -> pod、container_name -> 容器。

【讨论】:

【参考方案2】:

尝试这种方式安装,因为新的 CRD 有问题,所以我使用旧的 CRD-

kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/release-0.32/example/prometheus-operator-crd/alertmanager.crd.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/release-0.32/example/prometheus-operator-crd/prometheus.crd.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/release-0.32/example/prometheus-operator-crd/prometheusrule.crd.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/release-0.32/example/prometheus-operator-crd/servicemonitor.crd.yaml
kubectl apply -f https://raw.githubusercontent.com/coreos/prometheus-operator/release-0.32/example/prometheus-operator-crd/podmonitor.crd.yaml

helm install --name prometheus --namespace monitoring  stable/prometheus-operator --set prometheusOperator.createCustomResource=false

确保 CRD 不存在先验,您可以通过以下方式删除它们

kubectl delete crd --all

【讨论】:

以上是关于Prometheus 与 Kubernetes v1.16 不兼容的主要内容,如果未能解决你的问题,请参考以下文章

Prometheus 与 Kubernetes v1.16 不兼容

Kubernetes HPA 与 Prometheus Node-Exporter 的指标

Kubernetes基础自学系列 | 部署prometheus

Kubernetes 集群和应用监控方案的设计与实践

每天5分钟玩转Kubernetes | Prometheus Operator

Prometheus在kubernetes集群的搭建教程