Kubernetes配置NodePort服务绑定ExternalIP后集群外无法访问求助
Kubernetes访问故障排查方案
核心原理说明
NodePort类型Service的端口映射逻辑为:集群节点物理IP:NodePort -> Service ClusterIP:Port -> PodIP:TargetPort。你手动配置的externalIP仅会监听80端口,不会绑定NodePort端口,这是访问异常的核心原因。
分场景故障排查
- 集群内部访问
192.168.1.10:31438被拒绝
NodePort默认仅绑定到集群节点的物理网卡IP,不会绑定到Service的externalIP。测试NodePort连通性需执行curl <集群任意节点物理IP>:31438验证。 - 集群外部两个端口均无法访问
- 首先确认你配置的
192.168.1.10是否真实配置在集群任意节点的网卡上,且外部网络与该IP三层可达,无路由阻断。 - 检查集群节点的防火墙、安全组规则,确认已放开80端口、31438端口的入站访问权限。
- 执行命令
kubectl describe svc testingsite确认Endpoints字段已经正确关联两个Pod的IP,排除标签匹配错误问题。 - 检查kube-proxy规则是否正常生成:iptables模式执行
iptables -t nat -L KUBE-SERVICES | grep testingsite,ipvs模式执行ipvsadm -Ln | grep 10.96.246.110确认规则存在。
- 首先确认你配置的
配置优化建议
- 如果固定用
192.168.1.10对外提供服务:可将Service类型改为ClusterIP,保留externalIP配置,外部直接访问192.168.1.10:80即可,无需使用NodePort。 - 如果用NodePort方式对外暴露:可删除externalIP配置,外部直接访问
集群节点物理IP:31438即可。
额外注意:你提供的Deployment配置第一行存在拼写错误,
piVersion需修正为apiVersion,若实际部署时未修正将无法正常更新Deployment。
内容的提问来源于stack exchange,提问作者Sasank Kathera
相关产品推荐
相关产品推荐

