Kubernetes 普罗米修斯仪表板暴露在入口控制器上方

Kubernetes 普罗米修斯仪表板暴露在入口控制器上方,kubernetes,prometheus,kubernetes-ingress,nginx-ingress,prometheus-operator,Kubernetes,Prometheus,Kubernetes Ingress,Nginx Ingress,Prometheus Operator,我试图在k8集群中设置普罗米修斯,能够使用头盔运行。当我使用外部ip将prometheus服务器公开为LoadBalancer服务时访问仪表板。 当我尝试将此服务配置为ClusterIP并使用ingress controller将其作为后端时,同样的方法不起作用。收到404错误,有没有关于如何解决这个问题的想法 apiVersion: extensions/v1beta1 kind: Ingress metadata: name: ops-ingress annotations:

我试图在k8集群中设置普罗米修斯,能够使用头盔运行。当我使用外部ip将prometheus服务器公开为LoadBalancer服务时访问仪表板。 当我尝试将此服务配置为ClusterIP并使用ingress controller将其作为后端时,同样的方法不起作用。收到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 一些网络控件在浏览器控制台上呈现时出现了许多错误。

普罗米修斯可能希望控制根路径(/)


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

prometheus可能希望控制根路径(/)


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

请更改入口配置文件,添加
主机
字段:

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地址上的主机名

请看这里:

入口定义:

有用信息:


有用的文档:。

请更改入口配置文件,添加
主机
字段:

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地址上的主机名

请看这里:

入口定义:

有用信息:


有用的文档:。

您的意思是将主机添加为prometheus.example.com吗?添加了主机并收到相同的404错误,稍后url调整为
http://prometheus.example.com/prometheus/graph
一些网络控件在浏览器控制台上呈现时会出现很多错误。因此基本上行为与以前相同。删除路径域d,所以理想情况下您的url将成为
prometheus.example.com/graph
,如果路径被删除并且正在进行重写到root(/),那么prometheus的web控制台就可以工作了。但是有了它,如何在一个IP上公开一个入口控制器来管理多个服务?我的想法是为不同的服务定义不同的路径(扇出路由)您可以将
*.example.com
的dns配置为相同的IP,并可以进行基于子域的路由。因此,您可以获得
service1.example.com
service2.example.com
这是标准做法。正如您提到的,我的答案解决了您的问题,请接受:)您的意思是将主机添加为prometheus.example.com吗?添加了主机并收到相同的404错误,稍后url调整为
http://prometheus.example.com/prometheus/graph
一些网络控件在浏览器控制台上呈现时会出现很多错误。因此,基本上行为与以前相同。请删除路径字段,以便理想情况下,您的url将l变成
prometheus.example.com/graph
如果路径被删除,并且正在进行重写到root(/),那么prometheus的web控制台就可以工作了。但是,如何在一个IP上暴露一个入口控制器的情况下管理多个服务?我的想法是为不同的服务定义不同的路径(扇出路由)您可以将
*.example.com
的dns配置为相同的IP,并可以执行基于子域的路由。因此,您可以获得
service1.example.com
service2.example.com
这是标准做法。正如您提到的,我的答案解决了您的问题,请接受它:)尝试添加主机,行为保持不变。在进一步查看ingress控制器日志中的错误[17/Jan/2020:19:49:56+0000]“GET/static/css/graph.css?v=6f92ce56053866194ae5937012c1bec40f1dd1d9 HTTP/1.1”404190”http://prometheus.example.com/prometheus/graph“”Mozilla/5.0(Macintosh;Intel Mac OS X 10_15_2)AppleWebKit/537.36(KHTML,如Gecko)Chrome/74.0.3729.131 Safari/537.36“428 0.000[上游默认后端][尝试添加主机和行为保持不变。进一步查看此错误时,ingress控制器日志中的错误为[code>xx.xxx.xxx.xx---[17/Jan/2020:19:49:56+0000]“GET/static/css/graph.css?v=6f92ce56053866194ae5937012c1bec40f1dd1d9 HTTP/1.1”404 190"http://prometheus.example.com/prometheus/graph“Mozilla/5.0(Macintosh;英特尔Mac OS X 10_15_2)AppleWebKit/537.36(KHTML,类似Gecko)Chrome/74.0.3729.131 Safari/537.36”428 0.000[上游默认后端][]