Kubernetes Ingress配置后无法正常转发,如何排查修复?
解决Ingress访问显示NGINX默认页的问题
1. 补全Ingress类配置
你的Ingress资源未指定ingressClassName,而minikube的NGINX Ingress控制器需要明确关联该字段。修改ingress.yaml:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: backend-ingress spec: ingressClassName: nginx # 添加此行,关联NGINX控制器 rules: - host: test-1.<domain-name>.me http: paths: - path: / pathType: Prefix backend: service: name: backend-service port: number: 8000
执行更新:
kubectl apply -f ingress.yaml
2. 验证后端服务链路
确保后端Service和Pod正常关联:
- 检查Service状态:
确认kubectl get service backend-serviceCLUSTER-IP非空,端口8000已暴露。 - 检查Service的Endpoint:
查看kubectl describe service backend-serviceEndpoints字段,若为空,说明Service的selector和Pod的metadata.labels不匹配,需修正标签一致。 - 检查Pod状态:
确保目标Pod处于kubectl get podsRunning状态,无异常重启。
3. 集群内测试后端服务
用临时Pod测试后端服务是否正常响应:
kubectl run -it --rm --image=busybox:1.28 test-pod -- wget -qO- http://backend-service:8000
若返回内容不符合预期,优先排查应用Pod本身的问题。
4. 查看Ingress控制器日志
检查NGINX控制器的转发日志,定位请求处理问题:
kubectl logs -n kube-system -l app.kubernetes.io/name=ingress-nginx
搜索域名test-1.<domain-name>.me相关日志,排查转发错误或配置异常。
5. 确认本地DNS解析
确保本地机器将域名解析到Ingress的ADDRESS(192.168.49.2):
- 修改本地hosts文件:
- Windows:
C:\Windows\System32\drivers\etc\hosts - Linux/macOS:
/etc/hosts
添加一行:
192.168.49.2 test-1.<domain-name>.me - Windows:
- 刷新DNS缓存后重新访问。
内容的提问来源于stack exchange,提问作者mohammad
相关产品推荐
相关产品推荐

