0

设置: 我有一个小型 aws k8s 集群,其中基础设施组件部署为 helm 图表。其中一个组件是令人敬畏的 Prometheus 图表(请参见此处)。组件之间的网络通信应该使用 Istio Service Mesh 进行配置。

问题: Prometheus 找到 k8s 服务的kube-prometheus-alertmanager的单个端点,然后根据端点的 IP 地址不断尝试与它通信,而不是将其引用为“kube-prometheus-alertmanager..svc.cluster”。本地”主机。

由于同一节点上的 istio sidecar 并不真正知道 IP,但为 kube-prometheus-alertmanager..svc.cluster.local 主机定义了出站路由,因此它找不到对应的路由并一直告诉 prometheus 容器因为可以找到对应的路由,所以只能提供 404 HTTP 响应。因此,在 prometheus POD 的 istio-proxy sidecar 容器中,我们看到如下行:

[2021-01-22T15:08:54.492Z] "POST /api/v2/alerts HTTP/1.1" 404 NR "-" 0 0 0 - "-" "Prometheus/2.24.0" "62c4ab73-1111-2222-b7d0-9aea26621ec0" "<ENDPOINT_IP>:9093" "-" - - <ENDPOINT_IP>:9093 <kube-prometheus-prometheus_IP>:37178 - -

其中 404 NR "-" 清楚地表示边车容器在路由请求时遇到的问题。

Wish: 很高兴听到让 Prometheus 使用 Endpoints 的最佳策略,但要与 Istio 成为朋友。

提前致谢!

4

1 回答 1

1

我刚刚遇到了同样的问题,所有到 Alertmanager Pod IP 的内部流量都变成了 404。

解决方案:在kube-prometheus-stack values.yml

alertmanager.alertmanagerSpec.listenLocal=True

不知道为什么会这样,但它有效。

于 2021-05-10T13:53:32.863 回答