Kubernetes Nginx-Ingress路由失效:访问WordPress遭连接拒绝排查
问题分析:Kubernetes Ingress访问WordPress出现连接拒绝
现象回顾
执行curl命令时遭遇连接拒绝:
curl http://behniafarahbod.ir/wordpress curl: (7) Failed to connect to behniafarahbod.ir port 80 after 3 ms: Connection refused
查看Ingress资源时,ADDRESS字段为空:
kubectl get ingress -n devops-test
输出:
NAME CLASS HOSTS ADDRESS PORTS AGE phpmyadmin-ingress <none> behniafarahbod.ir 80 175m wordpress-ingress <none> behniafarahbod.ir 80 175m
核心原因及排查方向
1. Ingress资源未与Ingress Controller关联
你的Ingress资源CLASS字段显示<none>,说明它没有指定IngressClass,无法和Nginx Ingress Controller建立绑定关系。
- 先检查Nginx Ingress Controller的运行状态:
确认Pod处于kubectl get pods -n ingress-nginx kubectl get svc -n ingress-nginxRunning状态,Service有正常的外部访问入口(LoadBalancer IP或NodePort)。 - 修改Ingress配置,指定正确的IngressClass(Nginx Ingress默认类名为
nginx):apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: wordpress-ingress spec: ingressClassName: nginx # Kubernetes 1.18+推荐使用该字段 rules: - host: {{ .Values.wordpress.access.domain }} http: paths: - path: {{ .Values.wordpress.access.endpoint }} pathType: Prefix backend: service: name: wordpress-service port: number: 80
2. Ingress Controller未同步访问地址
Ingress的ADDRESS为空,说明Controller没有将自身的外部访问地址(如LoadBalancer公网IP、节点IP)同步到Ingress资源上:
- 云环境:检查是否成功申请到LoadBalancer资源;
- 本地集群(如Minikube):执行
minikube tunnel获取外部IP; - 裸机集群:确认Ingress Controller使用NodePort模式,域名需解析到集群节点IP。
3. 域名解析未指向正确地址
behniafarahbod.ir的DNS记录必须指向Ingress Controller的外部访问地址。可通过以下命令验证:
nslookup behniafarahbod.ir # 或 dig behniafarahbod.ir
4. 网络端口未开放
- NodePort模式:确认集群节点的80端口(或NodePort映射的端口)已开放防火墙规则;
- LoadBalancer模式:确认云厂商安全组允许80端口的入站流量。
5. 后端Service与Pod连通性异常
跳过Ingress,直接验证后端链路:
- 启动临时Pod测试Service连通性:
kubectl run -it --rm busybox --image=busybox --namespace=devops-test # 在Pod内执行 curl wordpress-service:80 - 检查WordPress Pod状态:
确认Pod处于kubectl get pods -n devops-test -l app=wordpress,tier=frontendRunning状态,且就绪/存活探针检测通过。
内容的提问来源于stack exchange,提问作者Behnia FB
相关产品推荐
相关产品推荐

