当前位置: 首页 > news >正文

Kubernetes 网络插件 Flannel 与 Calico 三种工作模式详解

前言

一、Flannel 网络插件概述

二、Flannel 的三种工作模式

1️⃣ VXLAN 模式(默认模式)

🧩 原理

📈 通信流程示意

💡 特点

✅ 适用场景

2️⃣ host-gw 模式(直连路由,高性能)

🧩 原理

📈 通信流程示意

💡 特点

✅ 适用场景

3️⃣ UDP 模式(早期方案)

🧩 原理

💡 特点

✅ 适用场景

🔖 Flannel 模式总结

三、Calico 网络插件概述

四、Calico 的三种工作模式

1️⃣ BGP 模式(无封装直连)

🧩 原理

📈 通信流程示意

💡 特点

✅ 适用场景

2️⃣ IPIP 模式(三层 Overlay)

🧩 原理

📈 通信流程示意

💡 特点

✅ 适用场景

3️⃣ VXLAN 模式(现代 Overlay 模式)

🧩 原理

📈 通信流程示意

💡 特点

✅ 适用场景

🔖 Calico 模式总结

五、Flannel vs Calico 工作模式对比

六、推荐选型与应用场景

七、总结:一句话记住它们

八、Calico BGP 模式与跨网段通信总结

Calico BGP 模式的核心机制

关于 “BGP 只能同网段” 的误区

Calico 默认只自动发现同网段邻居的原因

跨网段时如何建立 BGP 邻居关系

✅ 条件

✅ 示例

跨网段集群的推荐架构:Route Reflector 模式(RR)

Flannel 与 Calico VXLAN 的对比

核心结论总结

🧠 写在最后

前言

在 Kubernetes 集群中,网络插件(CNI) 是每个节点之间能否互通的关键。 其中,FlannelCalico 是最常用的两种网络方案。 它们都能让不同节点上的 Pod 实现通信,但工作原理和模式差异巨大。

本文将系统讲解:

  • Flannel 的三种工作模式

  • Calico 的三种工作模式

  • 两者在设计、性能和适用场景上的区别


一、Flannel 网络插件概述

Flannel 是 CoreOS 开发的最早一批 Kubernetes 网络插件之一。 设计目标非常简单:

让不同节点上的 Pod 能够“互通”。

Flannel 不关注安全策略和复杂路由,只做一件事 —— 连通性。 它通过在宿主机上创建虚拟网络接口(如 flannel.1),为每个节点分配一个独立的 Pod 子网。

Flannel 支持多种后端(Backend)模式,其中最常用的三种是:

  • VXLAN 模式(默认)

  • host-gw 模式

  • UDP 模式


二、Flannel 的三种工作模式

1️⃣ VXLAN 模式(默认模式)

🧩 原理
  • 每个节点分配一个子网段(例如 10.244.1.0/24)

  • Flannel 在节点上创建虚拟接口 flannel.1

  • Pod 之间通信时,数据包通过 flannel.1 封装为 VXLAN(UDP 8472)传输

  • 对端节点收到后解封装并交给目标 Pod

📈 通信流程示意
Pod -> cni0 -> flannel.1 -> eth0 -> 网络传输 -> flannel.1 -> cni0 -> Pod
💡 特点
优点缺点
支持跨子网通信存在 VXLAN 封装开销
配置简单,兼容性强节点多时广播效率下降
默认模式,开箱即用不支持 NetworkPolicy
✅ 适用场景

适用于小中型集群、测试环境或网络结构较简单的场景。


2️⃣ host-gw 模式(直连路由,高性能)

🧩 原理
  • 每个节点分配固定子网

  • Flannel 不做封装,而是在宿主机的路由表中添加静态路由

  • 数据包通过物理网络直接转发,无需隧道

📈 通信流程示意
Pod -> cni0 -> eth0 -> 物理网络 -> 目标节点 -> cni0 -> Pod
💡 特点
优点缺点
性能最高(无封装)仅适用于同一二层网络
延迟低、CPU 占用少不支持跨子网通信
✅ 适用场景

适用于所有节点在同一 VLAN/子网的集群,追求性能优先。


3️⃣ UDP 模式(早期方案)

🧩 原理
  • 最早版本的 Flannel 模式

  • 在用户态使用 UDP 套接字转发封装数据包

  • 因性能低下,已基本弃用

💡 特点
优点缺点
实现简单性能差,延迟高
兼容性好不推荐生产使用
✅ 适用场景

仅供了解,不建议在任何现代集群中使用。


🔖 Flannel 模式总结

模式封装方式是否跨子网性能适用场景
VXLAN内核 VXLAN (UDP 8472)中等默认,通用
host-gw直连路由同网段
UDP用户态封装测试用

三、Calico 网络插件概述

Calico 是一个更强大的容器网络与安全方案。 除了基础通信,它还提供:

  • 路由控制(BGP)

  • 安全策略(NetworkPolicy)

  • NAT / eBPF / WireGuard 加密支持

  • 高性能三层网络模型

Calico 有三种核心工作模式:

  • BGP 模式(无封装)

  • IPIP 模式(三层隧道)

  • VXLAN 模式(三层 Overlay)


四、Calico 的三种工作模式

1️⃣ BGP 模式(无封装直连)

🧩 原理
  • 每个节点运行 BGP 守护进程(bird

  • 节点之间通过 BGP 协议同步路由信息

  • Pod 流量直接通过宿主机路由表转发,无需隧道封装

📈 通信流程示意
Pod -> caliXXX -> eth0 -> 物理网络直连 -> 目标节点 -> caliXXX -> Pod
💡 特点
优点缺点
无隧道封装,性能最佳节点需三层互通
动态路由,智能更新网络必须支持 BGP
延迟最低配置相对复杂
✅ 适用场景

节点在同一 VPC 或同一三层网络中,追求极致性能的场景。


2️⃣ IPIP 模式(三层 Overlay)

🧩 原理
  • 将 Pod 的数据包使用 IP-in-IP 封装

  • 内层是 Pod IP,外层是宿主机 IP

  • 远端节点解封装后再转发给 Pod

📈 通信流程示意
Pod -> caliXXX -> tunl0 -> eth0 -> 网络 -> tunl0 -> caliXXX -> Pod
💡 特点
优点缺点
可跨子网通信封装带来一定性能损耗
兼容性好数据包抓取困难
早期默认模式不支持所有云网络环境
✅ 适用场景

节点跨不同子网或 VPC 时使用,兼容性较好。


3️⃣ VXLAN 模式(现代 Overlay 模式)

🧩 原理
  • 与 Flannel VXLAN 类似,但控制方式完全不同

  • 由 Calico Felix 进程维护 VXLAN FDB 表

  • 节点间通过单播方式建立点对点隧道(非广播)

  • 支持安全策略、加密、BGP 互通等高级特性

📈 通信流程示意
Pod -> caliXXX -> vxlan.calico -> eth0 -> 网络 -> vxlan.calico -> caliXXX -> Pod
💡 特点
优点缺点
支持跨子网通信存在一定封装开销
支持 NetworkPolicy、加密比 BGP 模式略复杂
控制平面智能化适配广泛,云原生友好
✅ 适用场景

云环境、多子网、混合云等生产场景,是当前主流选择。


🔖 Calico 模式总结

模式是否封装是否跨子网性能特点
BGP⭐⭐⭐⭐⭐性能最高
IPIP⭐⭐⭐兼容性好
VXLAN⭐⭐⭐⭐通用性强,支持策略

五、Flannel vs Calico 工作模式对比

对比项FlannelCalico
定位提供基础连通性提供连通 + 策略 + 路由
默认模式VXLANVXLAN(新版)或 IPIP(旧版)
网络策略❌ 不支持✅ 支持
封装控制etcd 静态表Felix 动态控制
性能最高模式host-gwBGP
是否可跨子网VXLAN 可IPIP/VXLAN 可
可扩展性一般极高(支持云环境)

六、推荐选型与应用场景

场景推荐模式说明
学习、测试集群Flannel VXLAN简单易用、部署快
节点同网段Flannel host-gw / Calico BGP性能最优
异网、多子网Calico VXLAN稳定、灵活
生产环境Calico VXLAN / BGP安全、可控、可扩展

七、总结:一句话记住它们

插件模式通俗理解
Flannel VXLAN虚拟交换机,广播式隧道每个节点都像接入同一个二层交换机,包被 VXLAN 封装后通过隧道传输,简单好用但性能一般。
Flannel host-gw直连路由,高性能节点间无封装,直接用路由表转发,只适合同网段、高速内网场景。
Flannel UDP过时的用户态隧道早期方案,数据包进出用户态封装,性能低下,几乎已淘汰。
Calico BGP无封装,纯三层路由每个节点像小型路由器,通过 BGP 广播 Pod 网段,无需隧道,延迟最低。
Calico IPIPIP 封装,跨网段可通外层再套一层 IP,适合节点跨网段的场景,配置简单兼容性强。
Calico VXLAN智能点对点隧道 + 安全策略自动建立 VXLAN 隧道,可跨网段通信,并支持 NetworkPolicy 安全隔离。

八、Calico BGP 模式与跨网段通信总结

Calico BGP 模式的核心机制

  • 通信原理: 每个节点运行一个 BGP 客户端(默认使用 Bird),将本节点的 Pod 网段(如 192.168.1.0/24)通过 BGP 广播给其他节点。 其他节点学习到这些路由后,可以直接通过三层网络访问对应的 Pod。

  • 关键特征: ✅ 无隧道封装(无 VXLAN / IPIP) ✅ 纯三层通信,性能最高 ✅ 依赖底层网络三层可达性(L3 reachability)


关于 “BGP 只能同网段” 的误区

  • 误区:Calico 的 BGP 模式必须同网段。

  • 事实:BGP 是三层协议,不要求同网段,只要求 IP 层能互通。

也就是说:

只要两台节点之间三层可达(可以互 ping 通、TCP 179 端口未被防火墙阻挡), 就可以建立 BGP 邻居关系,无论是否在同一网段。


Calico 默认只自动发现同网段邻居的原因

Calico 默认使用 Node-to-Node Mesh 模式,自动与同子网节点建立 BGP 邻居。 原因:

  • 避免大规模集群时 BGP 会话过多;

  • 避免自动与跨子网节点建邻造成混乱;

  • 简化默认配置。

但这并不代表它不能跨网段,只是默认不自动建立。


跨网段时如何建立 BGP 邻居关系

✅ 条件
  1. 节点间三层可达(能互通 TCP 179 端口);

  2. 手动配置 BGPPeer 对象,指定邻居节点的 IP 和 AS 号。

✅ 示例

NodeA: 10.0.1.3 NodeB: 10.0.2.5

在 NodeA 创建邻居:

calicoctl create -f - <<EOF
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:name: peer-to-nodeB
spec:peerIP: 10.0.2.5asNumber: 64512
EOF

在 NodeB 创建邻居:

calicoctl create -f - <<EOF
apiVersion: projectcalico.org/v3
kind: BGPPeer
metadata:name: peer-to-nodeA
spec:peerIP: 10.0.1.3asNumber: 64512
EOF

建立成功后,两节点会互通 Pod 路由,实现跨网段 Pod 互访。


跨网段集群的推荐架构:Route Reflector 模式(RR)

在多子网或大规模集群中,不建议所有节点互为邻居,而是:

  • 选取 1~2 台节点作为 Route Reflector(RR)

  • 各子网节点只与 RR 建邻;

  • RR 之间再互通路由;

  • 减少 BGP 会话数量,提高稳定性。


Flannel 与 Calico VXLAN 的对比

对比项Flannel VXLANCalico VXLANCalico BGP
通信层二层封装二层封装 + 网络策略三层直连
封装方式UDP VXLANUDP VXLAN无封装
性能中等中等偏高⭐最高
是否支持跨网段是(Overlay)✅ 是(需路由可达 + 手动建邻)

核心结论总结

  1. 🧠 BGP 是三层路由协议,不限制网段

  2. 🚀 Calico BGP 模式可跨网段使用,只要 IP 可达、TCP 179 端口未被防火墙阻挡;

  3. ⚙️ 跨网段节点需手动配置 BGPPeer 对象建立邻居关系;

  4. 🏗 推荐大规模或多网段集群使用 Route Reflector 模式

  5. BGP 模式性能最高,但对网络设计要求更高。

🧠 写在最后

  • Flannel 胜在“简单易用”,适合入门与测试;

  • Calico 胜在“可控与可扩展”,是生产环境首选;

  • VXLAN 是连接跨节点的主流方案,但 Calico 的 VXLAN 比 Flannel 更智能、更安全。

📌 简而言之:

Flannel 让集群“能通”, Calico 让集群“既能通,又能控”。

http://www.dtcms.com/a/475536.html

相关文章:

  • 网站建设策划书范文案例商城网站 备案
  • 营销型网站建设五大内容合肥seo网络营销推广
  • 任务网站(做任务学技能的)wordpress获取附件id
  • 菜谱网站 源码备份wordpress
  • 4.2 > Linux 文件/目录权限管理【核心命令】
  • 讲讲主动防御技术
  • 做泥网站wordpress项目下载文件
  • ClaudeCode架构细节分析-上下文工程之搜索代理
  • 做旅游的网站u网站建设
  • 家具定制网站站内推广的几种方式
  • 使用表征学习方法从人类活动中识别混合城市功能(学习笔记)
  • 山东网站制作软件如何制作小程序图片
  • 网站建设是怎么赚钱如何做网站页面免费的
  • 线性回归入门:用 Python 从零实现简单预测模型
  • 网站优化名词解释做网站详情的图片
  • 宁波公司做企业网站自己免费建设网站
  • 嘉兴网站制作优化学校怎么创建网站
  • 网站推广步骤奉贤专业网站建设
  • 无锡的网站建设公司成都到西安需要核酸检测吗
  • 上海seo网站排名优化公司阿里云服务器登录
  • 住房建设城乡网站东营造价信息网
  • 人才网站查询档案辽宁seo推广软件
  • 湛江网站建设优化推广网站备案 不备案
  • 做网站用什么面板好品牌网站设计视频教程
  • 现在用什么软件做网站石家庄外贸网站推广
  • 易语言做电影网站源码网页设计软件排名
  • 万网怎么创建网站吗建站本
  • 短网址生成器免费秦洁婷seo博客
  • 嵌入式 Linux 简介—第一部分(共3部分)
  • ORACLE 19c ADG部署