讲师中心 微信公众号
AI工具推荐 视频效率加速

详细介绍Kubernetes安装时 CNI 接口的网络选型差异

夜杰吖_3171

夜杰吖_3171

发布时间:2026-09-14 06:41:16

|

830人浏览过

|

来源于php中文网

原创

Calico 默认走 BGP 而非 VXLAN,因其绕过隧道封装、直写主机路由表,降低延迟与 CPU 消耗;但需网络设备支持 BGP 且运维熟悉 BGP 策略,否则自动降级为 IPIP/VXLAN。

详细介绍kubernetes安装时 cni 接口的网络选型差异

Calico 为什么默认走 BGP 而不是 VXLAN?

Calico 默认启用 BGP 模式,是因为它能绕过隧道封装开销,直接在主机路由表里写 Pod CIDR 的下一跳。你用 ip route 就能看到类似 10.244.1.0/24 via 192.168.5.2 dev eth0 proto bird 这样的条目——bird 是 Calico 的 BGP 守护进程。这比 VXLAN 少一层封包/解包,延迟低、CPU 消耗小。

但前提是你的网络设备(或 ToR 交换机)支持 BGP 邻居宣告,且运维团队熟悉 BGP 路由策略。如果只是单机测试或云上环境(如 AWS EC2 默认不开放 BGP),Calico 会 fallback 到 IPIP 或 VXLAN,这时性能和排障方式就完全变了。

  • BGP 模式下 NetworkPolicy 生效路径清晰:iptables + ipset + calico-felix 同步策略,tcpdump -i eth0 能直接看到原始 Pod 流量
  • VXLAN 模式下所有跨节点流量被封装进 UDP 包,tcpdump -i eth0 port 8472 才能看到,NetworkPolicy 实际作用在 vxlan0 接口之后,行为更难验证
  • 云厂商托管集群(如 EKS、AKS)通常禁用 BGP,Calico 自动降级;你得手动检查 calicoctl get ipippool -o wide 和 calicoctl get bgppeers 确认当前模式

Cilium 的 eBPF 网络策略到底改了什么?

Cilium 不是在 iptables 上叠规则,而是把策略逻辑编译成 eBPF 程序,挂载到内核的网络收发路径(如 tc ingress 或 socket filter)。这意味着:策略生效不依赖 netfilter,也不受 conntrack 表项限制,L7 协议(HTTP/gRPC)识别是原生能力,不是靠用户态代理。

但代价也很实在:eBPF 程序必须适配内核版本,4.19+ 是硬门槛,5.4+ 才支持完整功能。你在 CentOS 7(默认 3.10 内核)上硬装 Cilium,cilium status 会卡在 KubeProxyReplacement: Disabled,且所有策略静默失效。

  • 确认是否启用 eBPF 加速:cilium status | grep "KubeProxyReplacement",输出 Strict 才表示接管成功
  • L7 策略(如 http.method == "POST")只在 eBPF 模式下生效;fallback 到 iptables 模式时,这类规则会被忽略,但不会报错
  • 调试时别只看 iptables -t filter -L,得用 cilium monitor --type l7 或 bpftrace -e 'kprobe:__cgroup_bpf_run_filter_skb { printf("hit: %s\n", comm); }'

Flannel 的 host-gw 模式为何只适合二层同网段?

host-gw 是 Flannel 最轻量的后端,原理就是每个节点往其他节点的 Pod 子网加一条静态路由,下一跳指向对方节点的物理 IP。比如节点 A(192.168.1.10)运行 10.244.1.0/24,节点 B(192.168.1.11)运行 10.244.2.0/24,那么 A 上会自动添加 ip route add 10.244.2.0/24 via 192.168.1.11。

Kubernetes Network Policy Generator
Kubernetes Network Policy Generator

使用加权评分卡在12项标准上评估和比较隐私解决方案供应商。适用于选择隐私管理软件、比较数据保护方案等场景。

下载

问题在于:这个 via 必须是直连路由(即同一子网),否则 Linux 内核无法解析下一跳 MAC 地址。如果你的节点分布在不同 VLAN 或跨机房,host-gw 会静默退化为 vxlan,但配置文件里没显式声明,你得从 journalctl -u kubelet | grep flannel 里翻出 "Using backend vxlan" 才知道。

  • 检查实际使用的后端:ps aux | grep flanneld,看启动参数里是 --backend-type=host-gw 还是 --backend-type=vxlan
  • host-gw 下 NetworkPolicy 完全不生效——Flannel 本身不集成策略引擎,得靠额外组件(如 Calico 的 canal 方案)
  • 云上环境基本不能用 host-gw:AWS/Azure 的节点 IP 是私有地址,但底层网络不是二层直连,ARP 请求根本发不出去

NetworkPolicy 不生效?先盯住 CNI 插件的 “IPAM 类型”

很多人的 NetworkPolicy 写对了,却始终不拦截流量,根源常在 IPAM(IP 地址管理)配置。比如你用 Calico,但误用了 host-local IPAM(常见于手动写的 bridge 配置),会导致每个节点分配的 Pod IP 子网不一致,Calico 的 felix 进程无法同步全局策略状态。

正确做法是让 Calico 管理自己的 IPAM:calicoctl create -f - 。这时候 <code>felix 才会基于该池生成 ipset 并下发策略。

  • 验证 IPAM 是否由 CNI 插件自身管理:ls /etc/cni/net.d/ | grep -E "(calico|cilium)",配置里不应出现 "type": "host-local"
  • Flannel + host-local 是安全组合,但 NetworkPolicy 必须搭配 Calico/Cilium 等策略插件,不能指望 Flannel 自己实现
  • Canal(Calico + Flannel)方案里,Flannel 只管 IP 分配,Calico 管策略——但两者共享同一个 ippool,配置冲突会导致 felix 反复重启

CNI 选型不是挑一个名字安上去,而是确认它是否真正在你的网络拓扑、内核版本、运维能力边界内完成三件事:IP 分配可收敛、路由路径可验证、策略执行可审计。少看文档里的“支持”,多跑一遍 ip route、tc filter show、cilium policy trace。

热门AI工具

更多
PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

PixPix
PixPix Hot

PixPix是一款面向电商视觉生产的AI商品图生成工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

Lovart
Lovart Hot

一款面向视觉设计创作的AI设计平台,可通过智能体和画布工作流辅助制作海报、Logo、网页、PPT及其他视觉内容。

Atoms
Atoms Hot

Atoms是一款AI智能体工具,第一支自动构建真实业务的 AI 团队。

讯飞智作

讯飞智作是一款AI视频创作工具,AI文本配音工具,数字人课程、营销视频制作。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

相关专题

更多
硬盘接口类型介绍
硬盘接口类型介绍

硬盘接口类型有IDE、SATA、SCSI、Fibre Channel、USB、eSATA、mSATA、PCIe等等。详细介绍:1、IDE接口是一种并行接口,主要用于连接硬盘和光驱等设备,它主要有两种类型:ATA和ATAPI,IDE接口已经逐渐被SATA接口;2、SATA接口是一种串行接口,相较于IDE接口,它具有更高的传输速度、更低的功耗和更小的体积;3、SCSI接口等等。

3128

2023.10.19

PHP接口编写教程
PHP接口编写教程

本专题整合了PHP接口编写教程,阅读专题下面的文章了解更多详细内容。

4709

2025.10.17

php8.4实现接口限流的教程
php8.4实现接口限流的教程

PHP8.4本身不内置限流功能,需借助Redis(令牌桶)或Swoole(漏桶)实现;文件锁因I/O瓶颈、无跨机共享、秒级精度等缺陷不适用高并发场景。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

3749

2025.12.29

java接口相关教程
java接口相关教程

本专题整合了java接口相关内容,阅读专题下面的文章了解更多详细内容。

426

2026.01.19

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

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

116

2025.12.22

Go云原生应用与Kubernetes服务部署实战
Go云原生应用与Kubernetes服务部署实战

本专题围绕 Go 语言在云原生环境中的应用展开,讲解容器化部署、Kubernetes 编排、服务发现、健康检查与弹性扩缩容机制。通过真实云端案例,帮助开发者构建可扩展的云原生微服务架构。

188

2026.06.29

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

20

2026.10.10

Kratos框架HTTP与gRPC服务开发教程
Kratos框架HTTP与gRPC服务开发教程

本专题围绕Kratos框架双协议服务开发,涵盖HTTP路由与处理器编写、参数获取、gRPC服务实现与客户端调用、metadata上下文传递、encoding编解码注册、统一响应封装、超时控制与流式响应实现方法。

20

2026.10.10

Kratos框架Protobuf接口定义与代码生成合集
Kratos框架Protobuf接口定义与代码生成合集

本专题讲解Kratos框架接口定义体系,涵盖proto编写规范、proto add/client/server生成命令、http注解路由、validate校验、OpenAPI文档生成、跨服务proto复用与兼容性设计。

0

2026.10.10

热门下载

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

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kubernetes官方教程手册
Kubernetes官方教程手册

共0课时 | 0人学习

Kubernetes官方中文文档
Kubernetes官方中文文档

共0课时 | 0人学习

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

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn