news 2026/4/26 23:01:12

【K8s】【网络排查】Cluster-IP访问失效?深入解析K8s节点间通信阻断问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【K8s】【网络排查】Cluster-IP访问失效?深入解析K8s节点间通信阻断问题

1. 为什么你的Cluster-IP突然不工作了?

最近在帮客户排查一个典型的Kubernetes网络问题:Cluster-IP只能在Pod所在节点访问,其他节点完全无法连通。这种问题在实际运维中很常见,但排查起来往往让人头疼。今天我就带大家完整走一遍这个排查过程,顺便分享几个我在实际工作中总结的网络排查技巧。

先来看下这个案例的具体表现:

  • 在Pod所在节点(k8s-03)可以通过NodePort(192.168.199.203:30692)访问服务
  • 在其他节点(k8s-01/k8s-02)使用相同NodePort访问时超时
  • 所有节点都无法通过Cluster-IP(10.10.42.233)访问服务

这种症状通常指向节点间的网络通信问题。我遇到过的大多数类似案例,最终都跟三个关键因素有关:网络策略配置iptables规则内核参数。下面我们就从这三个维度展开分析。

2. 基础环境检查:别让低级错误浪费你的时间

2.1 网络拓扑确认

首先需要确认集群的基础网络配置是否正常。通过以下命令查看节点和Pod分布:

kubectl get nodes -o wide kubectl get pods -o wide

在这个案例中,我们发现:

  • 集群有三个节点(k8s-01/02/03)
  • nginx-dep1 Pod运行在k8s-03节点(IP 10.122.165.234)
  • 服务Cluster-IP为10.10.42.233,NodePort为30692

2.2 防火墙状态检查

虽然很多人都会先检查防火墙,但我想提醒一个细节:不同Linux发行版的防火墙服务名称可能不同。以下是常见发行版的检查命令:

# CentOS/RHEL systemctl status firewalld # Ubuntu/Debian systemctl status ufw # 通用检查 iptables -L -n | grep DROP

在本案例中,虽然防火墙已经关闭,但iptables的FORWARD链默认策略是DROP,这会导致节点间的转发包被丢弃。这是很多人在排查时容易忽略的点。

3. 深入网络层:iptables与内核转发

3.1 iptables转发策略分析

Kubernetes依赖iptables实现Service的负载均衡和路由。当FORWARD链策略为DROP时,节点间的Pod通信会被阻断。检查命令:

iptables --list | grep 'Chain FORWARD'

输出显示Chain FORWARD (policy DROP),这就是问题的直接原因。解决方案:

iptables -P FORWARD ACCEPT

但这样修改只是临时生效,重启后会恢复。永久生效的方法是修改sysctl配置:

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p

3.2 内核参数调优

除了ip_forward,还有其他几个关键内核参数会影响K8s网络:

# 检查当前值 sysctl -a | grep -E 'net.ipv4.conf.all.route_localnet|net.bridge.bridge-nf-call-iptables' # 建议设置 cat <<EOF >> /etc/sysctl.conf net.ipv4.conf.all.route_localnet=1 net.bridge.bridge-nf-call-iptables=1 net.bridge.bridge-nf-call-ip6tables=1 EOF

这些参数确保:

  • 允许本地网络路由(route_localnet)
  • 让网桥流量经过iptables规则(bridge-nf-call)

4. 进阶排查:当基础配置都正常时

如果上述检查都正常但问题依旧,就需要更深入的排查了。下面分享几个我在实际工作中用到的进阶技巧。

4.1 使用tcpdump抓包分析

在源节点和目标节点同时抓包,对比分析:

# 在请求发起节点(如k8s-01) tcpdump -i any host 10.10.42.233 -w from_source.pcap # 在Pod所在节点(k8s-03) tcpdump -i any host 10.122.165.234 -w at_target.pcap

通过Wireshark分析这两个文件,可以清楚地看到:

  • 请求包是否到达目标节点
  • 回复包是否被正确返回
  • 是否存在丢包或拒绝的情况

4.2 检查CNI插件状态

不同的CNI插件可能有特定的排查方法。以Calico为例:

# 检查Calico节点状态 calicoctl node status # 查看端点状态 calicoctl get workloadendpoints

常见CNI问题包括:

  • IP地址池耗尽
  • BGP对等体连接中断
  • 网络策略误配置

5. 长效预防措施

5.1 集群初始化检查清单

为了避免类似问题,建议在新集群初始化时执行以下检查:

  1. 内核参数检查

    sysctl -a | grep -E 'ip_forward|route_localnet|bridge-nf-call'
  2. iptables默认策略

    iptables -L | grep 'Chain FORWARD'
  3. CNI插件健康状态

    kubectl get pods -n kube-system | grep -E 'flannel|calico|cilium'

5.2 监控与告警配置

建议对以下指标设置监控:

  • 节点间网络延迟
  • TCP重传率
  • iptables规则计数
  • CNI插件健康状态

Prometheus示例查询:

# 节点间网络质量 probe_duration_seconds{job="blackbox-exporter", module="icmp"} # iptables规则变化率 rate(iptables_rules_processed_total[5m])

6. 真实案例复盘

去年我们遇到过一个生产环境案例:Cluster-IP在白天工作正常,但每晚固定时间出现访问失败。经过抓包分析发现:

  1. 某安全扫描工具每晚全量扫描
  2. 触发节点的conntrack表满
  3. 新建连接被丢弃

解决方案是调整内核参数:

echo "net.netfilter.nf_conntrack_max=1000000" >> /etc/sysctl.conf

这个案例告诉我们,网络问题有时会有隐藏的周期性因素,需要结合监控数据综合分析。

7. 实用排查工具箱

最后分享几个我常用的网络排查工具和命令:

  1. 基础连通性测试

    # 测试Cluster-IP连通性 curl -v http://<cluster-ip>:<port> # 测试NodePort连通性 curl -v http://<node-ip>:<node-port>
  2. 深入诊断工具

    # 查看kube-proxy生成的iptables规则 iptables-save | grep <service-name> # 检查服务端点 kubectl get endpoints <service-name> # 查看kube-proxy日志 kubectl logs -n kube-system <kube-proxy-pod>
  3. 网络性能测试

    # 节点间带宽测试 iperf3 -s # 在一台节点 iperf3 -c <server-ip> # 在另一台节点

记住,网络问题排查要遵循从底层到上层的原则:先物理连接,再网络层,最后才是应用层。希望这些经验能帮你少走弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/17 3:36:52

如何用STM32CubeMX+MATLAB2023B玩转硬件在环?STM32G4xx实战案例解析

如何用STM32CubeMXMATLAB2023B玩转硬件在环&#xff1f;STM32G4xx实战案例解析 当工程师需要在物理硬件上验证控制算法时&#xff0c;硬件在环&#xff08;HIL&#xff09;仿真技术提供了完美的解决方案。本文将带您深入探索如何利用STM32CubeMX与MATLAB 2023B的协同工作&#…

作者头像 李华
网站建设 2026/4/18 2:07:55

VCF 5.2.2 非生产环境优化:vSAN ESA HCL 检查绕过实操教程

在部署 VMware Cloud Foundation(VCF)5.x 版本时&#xff0c;若选择 vSAN 快速存储架构(ESA)作为主存储&#xff0c;系统会强制进行硬件兼容性列表(HCL)校验&#xff0c;非认证硬件将直接阻断部署。这一机制虽能保障生产环境稳定&#xff0c;但在实验室测试、POC 验证等非生产场…

作者头像 李华
网站建设 2026/4/17 20:28:19

基于Three.js与Vue3的WebGL BIM模型查看器开发实战

1. 为什么选择Three.jsVue3开发BIM查看器 最近在做一个建筑行业的项目时&#xff0c;客户要求能在网页端直接查看BIM模型&#xff0c;并且要支持基本的测量功能。经过技术选型&#xff0c;最终选择了Three.jsVue3的方案&#xff0c;这里分享一下我的实战经验。 Three.js作为最流…

作者头像 李华
网站建设 2026/4/17 16:30:00

ROFL播放器终极指南:轻松查看和分析英雄联盟回放文件

ROFL播放器终极指南&#xff1a;轻松查看和分析英雄联盟回放文件 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄联盟回放文件…

作者头像 李华
网站建设 2026/4/12 21:20:32

避坑指南:UniApp激励视频广告集成中的5个常见问题及解决方案

UniApp激励视频广告集成实战&#xff1a;5个典型问题与深度解决方案 第一次在UniApp项目中集成激励视频广告时&#xff0c;我盯着控制台里不断报错的"adUnitId未定义"信息整整两小时。这种挫败感促使我整理了这份避坑指南——不是简单的API文档复述&#xff0c;而是…

作者头像 李华