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

Kubernetes请求Pod时出现Connection Refused问题求助

问题排查与解决方案

1. 确认Nginx Ingress Controller是否正常部署运行

Docker Desktop内置的Kubernetes默认不会自动安装Ingress Controller,这是导致Ingress无法转发请求的常见原因:

  • 执行命令检查组件状态:
    kubectl get pods -n kube-system
    
    查看输出中是否存在名称包含nginx-ingress的Pod,且状态为Running。
  • 若未安装,可通过两种方式部署:
    1. 打开Docker Desktop设置 → Kubernetes,勾选Enable ingress controller并应用;
    2. 使用Helm安装:
      helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
      helm install ingress-nginx ingress-nginx/ingress-nginx
      

2. 验证Pod的网络可达性与服务状态

你提到直接curl Pod IP和ClusterIP超时,说明Pod层面存在网络或服务启动问题:

  • 检查Pod运行状态:
    kubectl get pods
    
    确认两个服务的Pod均处于Running状态,无CrashLoopBackOff等异常。
  • 查看Pod日志排查服务启动问题:
    kubectl logs <platforms-service-pod-name>
    kubectl logs <commands-service-pod-name>
    
    重点确认.NET服务是否绑定到0.0.0.0:8080而非localhost:8080——若绑定localhost,集群内其他节点/Pod将无法访问该服务。
  • 强制.NET服务绑定IPv4地址:
    在Program.cs中修改WebHost配置:
    .UseUrls("http://0.0.0.0:8080")
    
    或在appsettings.json中配置Kestrel:
    "Kestrel": {
      "Endpoints": {
        "Http": {
          "Url": "http://0.0.0.0:8080"
        }
      }
    }
    
    重新构建镜像并重新部署。

3. 检查ClusterIP Service的端点关联

确认Service已正确关联到Pod:

  • 查看Service的端点信息:
    kubectl describe service platform-clusterip-service
    kubectl describe service command-clusterip-service
    
    检查Endpoints字段是否显示Pod的IP与8080端口。若为空,说明Service的selector与Pod的labels不匹配(你的配置中已对应,可再次核对)。
  • 在集群内临时Pod中测试Service访问:
    kubectl run -it --rm --image=curlimages/curl curl-test
    
    进入临时Pod后执行:
    curl platform-clusterip-service:80/api/platforms
    curl command-clusterip-service:80/api/commands/platforms
    
    若仍超时,说明Pod服务本身存在问题或集群网络异常(Docker Desktop默认无网络策略限制)。

4. 检查Ingress配置与主机端口占用

  • 查看Ingress状态与事件:
    kubectl describe ingress ingress-service
    
    检查Events中是否存在后端服务找不到、Ingress Controller未处理等报错。
  • 确认主机80端口未被占用:
    执行命令查看端口占用情况:
    netstat -ano | findstr :80
    
    若80端口被IIS、Apache等程序占用,需停止占用程序,或修改Ingress Controller的端口映射配置。

5. 查看Ingress Controller日志排查转发问题

当Ingress Controller运行正常但请求仍失败时,查看控制器日志:

kubectl logs <nginx-ingress-controller-pod-name> -n kube-system

通过日志定位请求转发过程中的错误,比如路径匹配失败、后端服务不可达等。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 15:07:27