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

Docker本地Kubernetes集群ingress-nginx配置异常请求挂起求助

问题排查与修复方案

首先可以确定的核心问题点为 ingress-nginx-controller 服务的EXTERNAL-IP处于pending状态,Docker Desktop环境下正常安装ingress-nginx后该字段应显示为localhost,这是请求无法进入集群的直接原因,可按以下步骤逐一排查修复:

  • 步骤1:重装ingress-nginx修复LoadBalancer异常
    先删除现有ingress-nginx相关资源,执行以下命令清理准入webhook:
    kubectl delete -A ValidatingWebhookConfiguration ingress-nginx-admission
    
    再重新执行Docker Desktop对应版本的ingress-nginx安装命令,等待2分钟后执行kubectl get services -n ingress-nginx,确认ingress-nginx-controller的EXTERNAL-IP变为localhost即可。
  • 步骤2:修正Ingress配置规范
    你当前使用的networking.k8s.io/v1版本Ingress已弃用kubernetes.io/ingress.class注解,推荐使用标准的ingressClassName字段,修正后的Ingress配置如下:
    apiVersion: networking.k8s.io/v1
    kind: Ingress
    metadata:
      name: ingress-service
      annotations:
        nginx.ingress.kubernetes.io/use-regex: 'true'
    spec:
      ingressClassName: nginx
      rules:
        - host: ticketing.dev
          http:
            paths:
              - path: /api/users/?(.*)
                pathType: Prefix
                backend:
                  service:
                    name: auth-srv
                    port:
                      number: 3000
    
  • 步骤3:验证业务服务连通性
    跳过ingress链路直接验证Auth服务可用性,执行端口转发命令:
    kubectl port-forward service/auth-srv 3000:3000
    
    用Postman请求127.0.0.1:3000对应的业务接口,确认可以正常返回则说明业务服务本身无异常。
  • 步骤4:排查本地端口占用
    如果重装后EXTERNAL-IP仍为pending,检查本地80、443端口是否被其他程序(如本地Nginx、Apache、虚拟机网络服务等)占用,关闭占用程序后重启Docker Desktop即可恢复。
  • 临时验证方案
    若需要快速验证链路可用性,可直接通过ingress-nginx的NodePort访问,你的环境中http NodePort为30036,请求地址改为http://ticketing.dev:30036/api/users/xxx即可正常访问。

内容的提问来源于stack exchange,提问作者Conor Ladrigan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 11:51:03