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

Windows Docker Desktop上Kubernetes NodePort服务无法连接问题求助

排查步骤与解决方案

1. 优先排查端口不匹配问题(最高概率触发)

ASP.NET Core 5默认配置下会监听5000(HTTP)和5001(HTTPS)端口,你当前Deployment和Service配置中指向的容器端口是80,和服务实际监听端口不一致会直接导致流量转发失败。
你可以先执行kubectl logs <你的platformservice Pod名称>查看服务启动日志,确认监听端口,日志中会有类似Now listening on: http://[::]:5000的输出。

修复方案二选一:

  • 方案1:修改NodePort服务配置
    调整platforms-np-srv.yaml中的targetPort为5000:
    apiVersion: v1
    kind: Service
    metadata:
      name: platformnpservice-srv
    spec:
      type: NodePort
      selector:
        app: platformservice
      ports:
        - name: platformservice
          protocol: TCP
          port: 80
          targetPort: 5000
    
    修改后执行kubectl apply -f platforms-np-srv.yaml重新应用配置即可。
  • 方案2:强制应用监听80端口
    在Dockerfile的ENTRYPOINT行前添加环境变量配置,重新构建推送镜像后重启Deployment:
    FROM mcr.microsoft.com/dotnet/aspnet:5.0
    WORKDIR /app
    COPY --from=build-env /app/out .
    ENV ASPNETCORE_URLS=http://+:80
    ENTRYPOINT ["dotnet", "PlatformService.dll"]
    

2. 修正访问地址错误

你使用的10.109.215.230是Service的ClusterIP,仅支持集群内部访问,不能用来访问NodePort端口。正确的访问地址格式为http://<集群节点IP>:<NodePort端口>/api/platforms:
首先执行kubectl get nodes -o wide获取集群节点的对外IP,替换地址中的IP部分即可。
如果你使用的是Minikube等本地K8s集群,默认不支持直接用localhost访问NodePort,可执行minikube service platformnpservice-srv直接获取可用的访问地址。


3. 兜底验证步骤

如果以上配置修正后仍无法访问,按顺序做如下验证:

  • 执行kubectl get pods确认Pod处于Running状态,无重启、崩溃记录
  • 进入Pod内部本地验证服务可用性:
    kubectl exec -it <platformservice Pod名称> -- curl http://localhost:5000/api/platforms
    
    如果本地访问失败,优先排查应用代码、配置本身的问题
  • 本地端口转发验证Service可用性:
    kubectl port-forward svc/platformnpservice-srv 8080:80
    
    本地访问http://localhost:8080/api/platforms,如果能正常访问说明Service配置正常,问题出在集群节点的端口暴露、防火墙规则层面。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:51:02