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

跨主机访问Traefik Ingress超时,本地访问正常求助

排查Traefik Ingress NodePort超时问题的思路与解决方案

结合你描述的现象——内部curl正常、端口转发正常,但外部通过NodePort访问超时,还有kube-proxy的日志差异,咱们一步步来定位问题:

1. 优先排查kube-proxy的节点IP选择问题

你提到失败服务器的kube-proxy多了一行node.go:135] Successfully retrieved node IP: 192.168.215.172,而成功环境没有这条日志。这很可能是关键线索:

  • 先确认这个IP是否是服务器对外可访问的有效IP:执行kubectl get nodes -o wide,对比节点的InternalIP/ExternalIP与192.168.215.172是否一致。如果这个IP是服务器的内部网卡IP(仅内网可达),外部请求自然无法正常转发。
  • 检查kube-proxy的启动参数:如果没有手动指定--node-ip,kube-proxy会自动从网卡中选一个IP,容易选到错误的网卡。你可以修改kube-system命名空间下的kube-proxy DaemonSet配置,在args中添加--node-ip=<你的服务器可访问IP>,然后重启kube-proxy pod:
    kubectl rollout restart daemonset kube-proxy -n kube-system
    

2. 验证NodePort的流量转发规则是否生效

既然其他NodePort服务能正常访问,咱们要确认Traefik的NodePort对应的转发规则是否正确:

  • 如果kube-proxy用的是iptables模式,执行以下命令查看规则:
    iptables-save | grep 30220  # 你的Traefik HTTPS NodePort是30220
    
    你应该能看到KUBE-SVC-xxx和KUBE-SEP-xxx相关规则,且KUBE-SEP-xxx的目标地址是Traefik pod的IP和443端口。如果规则缺失或目标错误,说明kube-proxy没有正确生成转发规则。
  • 如果是ipvs模式,执行ipvsadm -Ln查看30220端口的后端服务器是否为Traefik pod的IP:443。

3. 检查Traefik的publishedService配置

你在Traefik的configmap中设置了publishedService = "traefik/traefik-ingress-controller-http-service",这个配置会让Traefik将Ingress的端点指向该Service的NodePort。需要验证:

  • 确认Service的Endpoints是否正常:
    kubectl get endpoints traefik-ingress-controller-http-service -n traefik
    
    输出的ENDPOINTS应该是Traefik pod的IP:80和IP:443,如果是空的,说明Service的selector没匹配到Traefik pod(检查Deployment的labels和Service的selector是否一致)。
  • 可以临时注释掉publishedService配置,重启Traefik pod后测试访问,看是否能正常响应,以此排除该配置带来的影响。

4. 抓包验证流量是否到达Traefik

用tcpdump在服务器上抓包,确认外部请求的数据包是否到达Traefik pod:

tcpdump -i any port 30220 or port 443
  • 如果能看到外部请求的数据包,但没有Traefik的响应包,说明流量卡在了kube-proxy到Traefik pod的转发环节,可能是iptables/ipvs规则问题,或者Traefik pod的网络策略限制。
  • 如果连请求数据包都看不到,那要确认服务器的安全组/防火墙是否真的开放了30220端口(虽然你说其他NodePort能访问,但交叉验证一次更稳妥)。

5. 重启kube-proxy修复转发规则

如果以上排查发现是kube-proxy的规则异常,可以尝试清理旧规则后重启:

# 先清理kube-proxy的iptables/ipvs规则
kubectl exec -n kube-system <kube-proxy-pod-name> -- kube-proxy --cleanup
# 重启kube-proxy DaemonSet
kubectl rollout restart daemonset kube-proxy -n kube-system

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 18:42:35