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

跨厂商VPS节点无法Curl K3s/Kubernetes Pod IP问题排查

K3s跨节点Pod网络不通问题排查

环境与故障现象

Pod分布情况

执行kubectl get pods -o wide(已隐藏无关字段)输出:

Test-nginx 1/1 Running 10.42.1.3 k8s-worker1
Test-nginx1 1/1 Running 10.42.1.6 k8s-worker1
Test-nginx3 1/1 Running 10.42.1.7 k8s-worker1
Test-nginx2 1/1 Running 10.42.0.9 k8s-master

节点配置

  • k8s-master:Ubuntu 20.04.4 LTS,iptables v1.8.4(legacy模式)
  • k8s-worker1:Ubuntu 22.04.1 LTS,iptables v1.8.7(nf_tables模式)

故障表现

  • k8s-master节点无法curl通worker1上的Pod(如10.42.1.3),但能正常访问本地Pod(10.42.0.9)
  • k8s-worker1节点无法curl通master上的Pod(10.42.0.9)

问题根因

K3s默认使用的Flannel网络插件依赖一致的iptables后端规则。当集群节点混合使用legacy和nf_tables两种iptables模式时,跨节点的数据包转发规则无法被正确解析和执行,导致Pod间网络连通性失效。

解决步骤

1. 将worker节点的iptables切换为legacy模式

在k8s-worker1节点执行以下命令:

# 临时切换当前会话的iptables后端
update-alternatives --set iptables /usr/sbin/iptables-legacy
update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

2. 永久锁定iptables后端(避免重启后还原)

编辑/etc/default/iptables文件(若不存在则创建),添加以下内容:

IPTABLES_MODE=legacy

3. 重启K3s Agent服务

systemctl restart k3s-agent

4. 验证网络连通性

在master节点重新curl worker上的Pod IP,同时在worker节点curl master上的Pod IP,确认连通性恢复。

内容的提问来源于stack exchange,提问作者Tony.Luo

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:20:03