我用演示应用程序创建了简单的kubernetes集群。在创建集群时,我安装了带有helm (默认值文件)的prometheus-堆栈和nginx-ingress控制器。
在集群设置好之后,我将创建Ingress对象来公开prometheus、grafana和alertmanager,其中包括:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: monitoring-ingress
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/use-regex: "true"
nginx.ingress.kubernetes.io/rewrite-target: /$2
spec:
rules:
- http:
paths:
- path: /prometheus(/|$)(.*)
pathType: Prefix
backend:
service:
name: prometheus-operated
port:
number: 9090
- path: /alertmanager(/|$)(.*)
pathType: Prefix
backend:
service:
name: prometheus-stack-kube-prom-alertmanager
port:
number: 9093
- path: /grafana(/|$)(.*)
pathType: Prefix
backend:
service:
name: prometheus-stack-grafana
port:
number: 80当我试图通过<ingress-controller's external IP>/prometheus访问prometheus时,它将解析为<ingress-controller's external IP>/graph,并显示404页未找到。
例如,如果我使用kubectl port-forward svc/prometheus-operated 9090:9090 -n monitoring,我可以毫无问题地到达普罗米修斯。
我可以通过<ingress-controller's external IP>/alertmanager联系到报警经理。路径被解析为<ingress-controller's external IP>/alertmanager/#/alerts
我怀疑重写路径是有问题的,但我想不出是什么原因。
请帮帮我..。
发布于 2021-07-09 06:42:03
最后,我找到了2种解决这个问题的方法。
选项1
我在azure中有DNS区域(我的集群也住在这里),在那里我为grafana、prometheus和指向入口控制器外部IP的警报管理器添加了子域。
当使用Helm图部署kube堆栈时,我在values.yaml文件中为prometheus提供了默认的根路径,并进行了折叠配置:
prometheus:
prometheusSpec:
externalUrl: http://prometheus.mydomainname.something然后,用于(例如Prometheus)的include清单需要包含主机地址,并且只包含根路径"/“。
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus-new
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- host: prometheus.mydomainname.something
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: prometheus-stack-kube-prom-prometheus
port:
number: 9090选项2
您还可以为kube堆栈(prometheus、grafana、警报管理器)的每个应用程序提供默认路径:
prometheus:
prometheusSpec:
externalUrl: http://mydomainname.something/prometheus并根据路径进行重定向,并使用:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: prometheus-new
namespace: monitoring
annotations:
kubernetes.io/ingress.class: "nginx"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
spec:
rules:
- http:
paths:
- path: /prometheus
pathType: Prefix
backend:
service:
name: prometheus-stack-kube-prom-prometheus
port:
number: 9090https://stackoverflow.com/questions/68256232
复制相似问题