Kubernetes minikube访问NodePort服务报Connection refused错误求助
根因
你的Service配置的标签选择器与Pod的实际标签不匹配,导致Service没有关联任何后端Pod,所有访问请求都无法转发,最终返回连接拒绝。
具体配置差异:
- Deployment中Pod模板设置的标签为
hello: hi - Service的
selector字段配置为name: deploymnt,二者完全无法匹配。
验证方法
你可以执行以下命令确认问题:
kubectl get endpoints demoservice
正常情况下该命令会返回2个关联的Pod IP+端口,你的环境下执行会显示没有关联的后端地址。
修复步骤
- 修改
Service.yaml的selector配置,替换为和Pod标签一致的内容:
kind: Service apiVersion: v1 metadata: name: demoservice spec: ports: - port: 80 nodePort: 32201 selector: hello: hi # 这里修改为匹配Pod的标签 type: NodePort
- 重新应用配置:
kubectl apply -f Service.yaml
- 等待几秒后再次验证关联关系:
kubectl get endpoints demoservice
确认返回2个后端地址后,再用minikube service demoservice返回的地址访问即可正常访问httpd服务。
额外说明
你在本地主机直接curl ClusterIP(10.105.148.95)加NodePort的操作本身不符合Kubernetes网络规则:ClusterIP是集群内部可访问的IP,仅在集群网络内部生效,NodePort服务需要用节点IP(也就是minikube的IP 192.168.49.2)加NodePort端口访问。
内容的提问来源于stack exchange,提问作者Pawan
相关产品推荐
相关产品推荐

