0

0

Cilium 安装后 pod 间通信不通但 node 到 pod 通的典型情况

舞夢輝影

舞夢輝影

发布时间:2026-01-20 16:21:51

|

118人浏览过

|

来源于php中文网

原创

Cilium跨节点Pod通信失败的核心原因是隧道/直连模式未正确配置:需检查cilium status确认Tunnel启用、CNI配置中tunnel值非disabled、排除CNI配置文件冲突、验证IPAM分配与路由表完整性、排查NetworkPolicy拦截。

cilium 安装后 pod 间通信不通但 node 到 pod 通的典型情况

这是 Cilium 部署后非常典型的“半通”现象:节点能 ping 通本机 Pod(curl http://pod-ipping 成功),但跨节点的 Pod 之间无法通信。问题不在基础连通性,而在 Cilium 的网络路径未正确打通。

核心原因:Cilium 未启用或未正确配置隧道/直连模式

Cilium 默认需要一种机制来转发跨节点流量——要么封装(如 VXLAN/Geneve),要么直连(Direct Routing)。若该机制未生效,数据包就卡在源节点出不去。

  • 检查当前隧道状态:cilium status | grep "Tunnel",输出应为 Tunnel: vxlangeneve;若显示 disabled 或为空,说明未启用隧道
  • 确认 CNI 配置中是否显式禁用了隧道:kubectl -n kube-system get cm cilium-config -o yaml | grep tunnel,值应为 vxlangeneve,而非 disabled
  • 若使用 Direct Routing 模式,需确保所有节点在**同一二层网络**,且已配置正确的主网卡(如 --devices=eth0)和路由规则

常见干扰项:CNI 配置文件冲突或残留

Kubernetes 只加载 /etc/cni/net.d/ 下字典序最小的 CNI 配置文件。若旧插件(如 flannel、calico)的配置仍存在,Cilium 配置可能被跳过。

InsCode
InsCode

InsCode 是CSDN旗下的一个无需安装的编程、协作和分享社区

下载
  • 列出配置文件:ls -1 /etc/cni/net.d/,确认只有 Cilium 的配置(如 05-cilium.conf),其他如 10-flannel.conflist 必须删除
  • 检查 kubelet 日志:journalctl -u kubelet -n 100 --no-pager | grep "cni config",看是否提示“loaded plugin 'cilium'”或误加载了别的插件
  • 重启 kubelet 后再验证:sudo systemctl restart kubelet

IPAM 与 CIDR 分配异常

Cilium 为每个节点分配一个子网(如 10.217.1.0/24),若分配失败或重叠,Pod 就得不到合法 IP,或路由表缺失对应条目。

  • 查看节点实际分配的 Pod CIDR:cilium node list,比对各节点 allocCIDR 是否互不重叠、且在集群规划范围内
  • 检查节点路由表:ip route show | grep 10.217(假设你用的是该网段),应有类似 10.217.2.0/24 via 10.0.2.2 dev eth0 的跨节点路由
  • 若路由缺失,可能是 CiliumNode CR 未同步,可尝试手动删除后触发重建:kubectl delete ciliumnode

策略默认拦截(尤其启用了 NetworkPolicy)

Cilium 默认行为是“允许所有”,但一旦部署了任何 NetworkPolicy(包括 Istio 注入的 sidecar 策略),就可能意外阻断基础通信。

  • 快速验证是否策略导致:cilium policy get 查看是否有非空策略;若有,临时清空:cilium policy delete --all
  • 检查策略执行模式:cilium config view | grep PolicyEnforcement,正常应为 default;若为 always,会强制检查所有连接,增加开销并可能误判
  • 注意:Istio + Cilium 组合下,sidecar 的 mTLS 或 egress 策略常静默拦截 ICMP/TCP 健康检查流量

相关专题

更多
curl_exec
curl_exec

curl_exec函数是PHP cURL函数列表中的一种,它的功能是执行一个cURL会话。给大家总结了一下php curl_exec函数的一些用法实例,这个函数应该在初始化一个cURL会话并且全部的选项都被设置后被调用。他的返回值成功时返回TRUE, 或者在失败时返回FALSE。

431

2023.06.14

linux常见下载安装工具
linux常见下载安装工具

linux常见下载安装工具有APT、YUM、DNF、Snapcraft、Flatpak、AppImage、Wget、Curl等。想了解更多linux常见下载安装工具相关内容,可以阅读本专题下面的文章。

175

2023.10.30

数据库Delete用法
数据库Delete用法

数据库Delete用法:1、删除单条记录;2、删除多条记录;3、删除所有记录;4、删除特定条件的记录。更多关于数据库Delete的内容,大家可以访问下面的文章。

269

2023.11.13

drop和delete的区别
drop和delete的区别

drop和delete的区别:1、功能与用途;2、操作对象;3、可逆性;4、空间释放;5、执行速度与效率;6、与其他命令的交互;7、影响的持久性;8、语法和执行;9、触发器与约束;10、事务处理。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

210

2023.12.29

default gateway怎么配置
default gateway怎么配置

配置default gateway的步骤:1、了解网络环境;2、获取路由器IP地址;3、登录路由器管理界面;4、找到并配置WAN口设置;5、配置默认网关;6、保存设置并退出;7、检查网络连接是否正常。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

220

2023.12.07

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务
Golang云原生微服务Kubernetes_Golang怎么集成Kubernetes开发云原生服务

Golang云原生微服务Kubernetes (K8s) 是指 使用 Go 语言(Golang)编写的云原生微服务,并利用 Kubernetes 平台进行容器化部署、自动化管理、弹性伸缩和高效编排的一整套现代应用架构方案。

24

2025.12.22

http500解决方法
http500解决方法

http500解决方法有检查服务器日志、检查代码错误、检查服务器配置、检查文件和目录权限、检查资源不足、更新软件版本、重启服务器或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

373

2023.11.09

Java JVM 原理与性能调优实战
Java JVM 原理与性能调优实战

本专题系统讲解 Java 虚拟机(JVM)的核心工作原理与性能调优方法,包括 JVM 内存结构、对象创建与回收流程、垃圾回收器(Serial、CMS、G1、ZGC)对比分析、常见内存泄漏与性能瓶颈排查,以及 JVM 参数调优与监控工具(jstat、jmap、jvisualvm)的实战使用。通过真实案例,帮助学习者掌握 Java 应用在生产环境中的性能分析与优化能力。

19

2026.01.20

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
HTML5/CSS3/JavaScript/ES6入门课程
HTML5/CSS3/JavaScript/ES6入门课程

共102课时 | 6.8万人学习

前端基础到实战(HTML5+CSS3+ES6+NPM)
前端基础到实战(HTML5+CSS3+ES6+NPM)

共162课时 | 18.9万人学习

第二十二期_前端开发
第二十二期_前端开发

共119课时 | 12.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号