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
相关产品推荐
相关产品推荐

