通过Nginx Ingress 80端口访问Prometheus Web UI失败如何解决
问题根因
你当前使用的是NGINX官方发布的Ingress Controller(非Kubernetes社区维护的ingress-nginx版本),路径匹配规则和社区版存在差异,你配置的path: /* + pathType: Prefix 无法正确匹配请求,导致所有访问请求落到了NGINX的默认后端,返回默认欢迎页。
解决方案
1. 修改Ingress资源配置
将你的ingress-resource.yaml替换为以下内容:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: prometheus-ui namespace: nginx-ingress annotations: kubernetes.io/ingress.class: nginx spec: rules: - http: paths: - path: / pathType: Prefix backend: service: name: prometheus-service port: number: 80
如果你需要保留通配符写法,也可以改为以下配置,效果一致:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: prometheus-ui namespace: nginx-ingress annotations: kubernetes.io/ingress.class: nginx spec: rules: - http: paths: - path: /* pathType: ImplementationSpecific backend: service: name: prometheus-service port: number: 80
2. 重新应用配置
执行以下命令更新Ingress规则:
kubectl apply -f ingress-resource.yaml
3. 验证生效
等待10秒左右执行命令检查Ingress状态,确认无报错:
kubectl describe ingress prometheus-ui -n nginx-ingress
之后直接访问云服务器公网IP即可打开Prometheus界面。
异常排查
如果修改后仍然无法访问,可按以下步骤排查:
- 验证Prometheus服务本身可用性:在集群内节点执行
curl 10.233.29.33,确认能正常返回Prometheus页面内容 - 查看Ingress Controller日志确认规则加载情况:
kubectl logs -n nginx-ingress <你的nginx-ingress-pod名称>,检查是否有Ingress配置加载错误的提示
内容的提问来源于stack exchange,提问作者mek
相关产品推荐
相关产品推荐

