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