2

我正在尝试在 k8 集群中设置 Prometheus,能够使用 helm 运行。当我使用外部 IP 将 prometheus-server 公开为 LoadBalancer 服务时访问仪表板。当我尝试将此服务配置为 ClusterIP 并使用入口控制器将其作为后端时,同样不起作用。收到 404 错误,关于如何解决此问题的任何想法?

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ops-ingress
  annotations:
    #nginx.org/server-snippet: "proxy_ssl_verify off;"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - http:
      paths:
      - path: /prometheus(/|$)(.*)
        backend:
          serviceName: prometheus-server
          servicePort: 80

有了上面的入口定义,url“http://<>/prometheus/被重定向到http://<>/graph/,然后404错误页面被渲染。当 url 调整为 http://<>/prometheus/graph 时,一些 web 控件会在浏览器控制台上呈现很多错误。

4

2 回答 2

1

请更改您的 Ingress 配置文件,添加host字段:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ops-ingress
  annotations:
    #nginx.org/server-snippet: "proxy_ssl_verify off;"
    nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
  rules:
  - host: prometheus.example.com
    http:
      paths:
      - path: /prometheus(/|$)(.*)
        backend:
          serviceName: prometheus-server
          servicePort: 80

然后应用更改执行命令:

$ kubectl aply -f your_ingress_congifguration_file.yaml

请求中的host标头字段提供来自目标 URI 的主机和端口信息,使源服务器能够在为单个 IP 地址上的多个主机名的请求提供服务时区分资源。

请看这里:hosts-header

入口定义:入口

有用信息:helm-prometheus

有用的文档:入口路径匹配

于 2020-01-02T11:53:05.130 回答
0

Prometheus 可能期望控制根路径 (/)。

请将 Ingress 更改为prometheus.example.com,它应该可以正常工作。(将其更改为子域)

于 2020-01-01T18:10:07.097 回答