You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的运行状态:
    kubectl get pods -n ingress-nginx
    kubectl get svc -n ingress-nginx
    
    确认Pod处于Running状态,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,直接验证后端链路:

  1. 启动临时Pod测试Service连通性:
    kubectl run -it --rm busybox --image=busybox --namespace=devops-test
    # 在Pod内执行
    curl wordpress-service:80
    
  2. 检查WordPress Pod状态:
    kubectl get pods -n devops-test -l app=wordpress,tier=frontend
    
    确认Pod处于Running状态,且就绪/存活探针检测通过。

内容的提问来源于stack exchange,提问作者Behnia FB

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 05:27:27