设置: 我有一个小型 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 成为朋友。
提前致谢!