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

Minikube单节点K8s集群NodePort访问容器应用连接被拒问题

故障根因

核心问题是端口配置不匹配:
你的Node.js应用实际监听8000端口(启动日志明确输出Server listening on port 8000),但Kubernetes配置里所有和容器业务端口相关的字段都错填成了3000:

  • Pod定义里的containerPort写的是3000
  • NodePort类型Service的targetPort也指向3000
    Service收到31515端口的请求后,会转发到对应Pod的3000端口,但这个端口根本没有服务在监听,自然会返回Connection refused错误。
    其余配置(标签选择器、Service类型、NodePort端口号)都是正确的,不存在资源匹配问题。
修复步骤
  • 修改node-server-pod.yaml,把容器端口改成应用实际监听的8000:
apiVersion: v1
kind: Pod
metadata:
  name: web-server
  labels:
    web: server
spec:
  containers:
    - name: web-server-container
      image: sundaray/node-server:v1
      ports:
        - containerPort: 8000
  • 修改node-server-service.yaml,把转发目标端口改成8000:
apiVersion: v1
kind: Service
metadata:
  name: web-server-port
spec:
  type: NodePort
  ports:
    - port: 3050
      targetPort: 8000
      nodePort: 31515
  selector:
    web: server
  • 重新应用配置让变更生效:
kubectl delete -f node-server-pod.yaml -f node-server-service.yaml
kubectl apply -f node-server-pod.yaml -f node-server-service.yaml

等Pod状态变为Running后,再执行curl 192.168.59.100:31515就能得到预期的Hello from Node响应。

补充说明:containerPort本身只是声明字段,不会修改应用实际监听的端口,也不做端口强制暴露,真正决定Service转发规则的是targetPort字段,这个值必须和容器内应用实际监听的端口完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 11:33:14