Kubernetes集群通过Nginx Ingress暴露Grafana服务无法访问问题求助
排查与修复步骤
Ingress规则未被控制器同步
kubectl get ingress结果中CLASS字段为<none>,当前版本Nginx Ingress控制器默认不处理未指定ingressClassName的Ingress资源。在Ingress YAML的spec层级添加配置:spec: ingressClassName: nginx # Helm安装的Nginx Ingress默认类名为nginx也可修改控制器启动参数添加
--watch-ingress-without-class=true,让其默认处理所有无类的Ingress资源。Grafana Service配置冲突
你编写的Grafana Service YAML手动指定clusterIP: 10.7.2.57,但实际查询到的Grafana ClusterIP为10.7.2.55,说明手动指定IP无效。删除Service YAML中的clusterIP行后重新apply,由集群自动分配IP。访问方式错误
你的Nginx Ingress控制器为NodePort类型,无外部LoadBalancer,Ingress返回的ADDRESS 10.7.0.5为集群内部地址,无法直接对外访问:- 对外访问使用集群任意节点IP + Nginx http NodePort
32665 - 你的Ingress配置了
host: test.grafana.com,需要在访问端hosts文件添加记录:节点IP test.grafana.com,或测试时指定Host头:
curl -H "Host: test.grafana.com" http://<集群节点IP>:32665无需绑定域名可直接删除Ingress规则中的
host字段,即可通过IP+端口直接访问。- 对外访问使用集群任意节点IP + Nginx http NodePort
连通性验证
- 验证规则是否加载:
kubectl exec -n ingress-nginx ingress-nginx-controller-57ffff5864-rw57w -- cat /etc/nginx/nginx.conf | grep test.grafana.com无输出说明规则未同步,回到Ingress类配置步骤排查。
2. 验证控制器到Grafana的连通性:kubectl exec -n ingress-nginx ingress-nginx-controller-57ffff5864-rw57w -- curl http://grafana.default.svc.cluster.local:3000访问失败需检查集群网络策略,确认ingress-nginx命名空间可访问default命名空间的服务。
内容的提问来源于stack exchange,提问作者rocky
相关产品推荐
相关产品推荐

