news 2026/9/8 5:25:53

K8S-网络组件 Calico

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
K8S-网络组件 Calico

一、Calico 核心概念与特性

什么是 Calico?

Calico 是一套开源的网络和网络安全方案,专为容器、虚拟机和宿主机之间的网络连接设计,可无缝集成于 Kubernetes、OpenShift、DockerEE、OpenStack 等平台。其核心特点是采用纯三层网络架构,通过路由规则而非 Overlay 隧道控制报文流向,大幅减少额外开销。

核心优势

  1. 高性能:基于原生 TCP/IP 协议栈,无 Overlay 封装开销,转发效率高
  2. 可扩展性:采用与互联网相同的 BGP 路由协议,天然支持大规模集群
  3. 易调试性:无隧道封装,网络路径清晰,可直接在主机上进行调试
  4. 低依赖性:仅需三层路由可达,适配 VM、容器、物理机等混合环境
  5. 安全可控:支持细粒度的网络策略(ACL 规则)实现访问控制

主要局限

  1. 路由规模限制:路由数量与容器数量一致,可能超过网络设备处理能力
  2. 运维复杂度:节点上会生成大量 iptables 规则和路由表项,排障难度较高
  3. 功能限制:不支持 VPC,容器 IP 只能从 Calico 指定网段分配,无流量控制功能
  4. BGP 规模依赖:网络扩张受限于 BGP 协议的最大支持规模

二、Calico 架构与核心组件

Calico 的架构围绕 "纯三层路由 + BGP 协议" 设计,核心组件协同工作实现网络连通与策略控制:

组件功能说明
Felix运行在每个节点的核心组件,负责接口管理(配置主机 endpoint 流量处理)、路由规则维护(写入内核 FIB 转发信息库)、ACL 规则管理(写入内核确保安全策略)及状态报告(向 etcd 反馈网络健康状态)
Etcd分布式数据库,存储集群路由信息和网络策略,保证数据一致性,建议至少 3 节点部署以提高容错性
Orchestrator Plugin协调器插件(如 Kubernetes CNI 插件),实现 Calico 与容器平台的无缝集成
BIRDBGP 客户端,运行在每个节点,读取 Felix 维护的路由信息并通过 BGP 协议在集群内分发
BGP Router Reflector (RR)解决大规模集群中 BGP 连接数爆炸问题,所有节点仅与 RR 同步路由,减少连接数(替代全互联模式)
CalicoctlCalico 命令行管理工具,用于配置和监控集群网络

组网核心原理

Calico 将每个节点的操作系统协议栈视为 "虚拟路由器",容器作为连接在路由器上的终端,通过 BGP 协议在路由器之间交换路由信息:

  1. 每个容器 / 虚拟机分配唯一的 workload-endpoint(网络端点)
  2. 节点通过 BGP 协议向集群宣告:"某 IP / 网段在我这里,下一跳是我的 IP"
  3. 所有节点通过 BGP 学习到全网路由,从而实现跨节点通信

三、Calico 网络模式详解

Calico 提供两种主要网络模式,适用于不同的网络环境:

1. BGP 模式:高效的原生路由

BGP(边界网关协议)是互联网核心路由协议,Calico 通过 BGP 自动维护集群路由信息,与 Flannel 的 host-gw 模式原理类似,但路由同步更自动化。

BGP 部署模式

  • 全互联模式(Node-to-Node Mesh):所有节点两两建立 BGP 连接,路由直接交换。优点是简单,缺点是连接数随节点数呈 N² 增长,适合节点数 < 100 的集群。
  • 路由反射模式(RR):指定 1 个或多个节点作为路由反射器,其他节点仅与 RR 建立连接并同步路由。解决大规模集群连接数爆炸问题,建议生产环境采用(至少 2 个 RR 节点保证高可用)。

2. IPIP 模式:跨网段的隧道方案

IPIP 是 Linux 内核的隧道技术,将 IP 包封装在另一个 IP 包中(类似 "IP 层网桥"),解决跨网段通信问题。

工作流程

  1. 容器数据包到达主机后,由 IPIP 驱动(tunl0 设备)封装,源 / 目的 IP 替换为主机 IP
  2. 封装后的数据包通过物理网络路由到目标节点
  3. 目标节点解封装,还原原始 IP 包并转发到目标容器

模式对比

维度BGP 模式IPIP 模式
流量处理路由直接转发,无封装tunl0 设备封装 / 解封装
适用场景同网段集群,大型网络跨网段集群
效率高(原生路由)略低(需封装)
网络类型Underlay(底层网络)Overlay(叠加网络)

四、Pod 通信流程深度解析

1. 同一节点内 Pod 通信

无需经过物理网络,完全依赖主机内核路由:

  1. Pod1 通过 vEth pair(一端在 Pod 内为 eth0,另一端在主机为 caliXXX)将数据包发送到主机
  2. 主机查询路由表,发现目标 Pod2 的 IP 对应本地 cali 设备
  3. 数据包通过对应 cali 设备转发到 Pod2 的 eth0

2. 不同节点间 Pod 通信

依赖 BGP 路由同步和物理网络:

  1. Pod1 数据包通过 vEth 到达 Node-A 主机
  2. Node-A 查询路由表(由 BGP 同步),发现目标 Pod2 所在网段的下一跳是 Node-B 的主机 IP
  3. 数据包通过 Node-A 的物理网卡发送到物理网络,路由至 Node-B
  4. Node-B 接收后查询本地路由表,通过对应 cali 设备转发到 Pod2
  5. 回复包按反向路径返回

BGP 在跨节点通信中的核心作用

  • 路由宣告:每个节点的 Felix 将本地 Pod 网段信息写入 BIRD
  • 路由交换:BIRD 通过 BGP 协议将路由信息宣告给其他节点或 RR
  • 路由学习:接收节点学习到路由后更新内核路由表
  • 动态维护:Felix 持续监控并更新路由,确保正确性

五、总结

Calico 凭借纯三层架构和 BGP 协议,在 Kubernetes 网络方案中展现出高性能、可扩展的优势,尤其适合对网络效率和大规模集群有需求的场景。其核心价值在于:

  • 摒弃 Overlay 隧道,依赖原生路由和 BGP 协议,减少性能损耗
  • 支持细粒度网络策略,满足安全隔离需求
  • 灵活的部署模式(BGP 全互联 / RR、IPIP),适配不同网络环境

无论是中小规模集群的全互联部署,还是大规模集群的路由反射模式,Calico 都能通过简洁的设计提供稳定高效的网络能力,是容器网络方案的优质选择。

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

一张学术海报10分钟搞定:PPT手把手攻略+97套免抠素材随领

学术海报快速制作指南目标读者&#xff1a;科研人员、学生、需要快速制作学术海报的群体 核心需求&#xff1a;现成素材库&#xff0c;10分钟完成专业级海报设计PPT设计技术模块页面设置 标准学术海报尺寸&#xff08;A0/A1&#xff09;的PPT参数&#xff1a;宽度84.1cm&#x…

作者头像 李华
网站建设 2026/9/8 2:30:26

Flink学习笔记:多流 Join

前面我们已经了解了 Flink 几个核心概念&#xff0c;分别是时间、Watermark 已经窗口。今天我们来一起了解下 Flink 是怎么进行多个流的 Join 的。我们今天从两个流的 Join 来入手&#xff0c;扩展到多个流也是一样的道理。Flink 中的 Join 可以分为两种&#xff1a;Window Joi…

作者头像 李华
网站建设 2026/9/7 8:07:20

AI产品经理必读:构建智能交互系统的终极指南!

简介 文章介绍了构建智能交互系统的关键要点&#xff1a;需求分析需考虑环境特征、用户状态和任务目标&#xff1b;技术选型应平衡成本与效果&#xff0c;避免盲目追求大模型&#xff1b;交互设计要消除歧义&#xff0c;关注情感交互&#xff1b;建立数据闭环实现持续优化&…

作者头像 李华
网站建设 2026/9/7 20:12:43

谷歌浏览器性能面板使用指南

谷歌浏览器性能面板使用指南一、打开性能面板的方法1. 访问方式按 F12 或 CtrlShiftI (Windows/Linux) / CmdOptionI (Mac) 打开开发者工具选择 "Performance" 选项卡或使用快捷键 CtrlShiftE (Windows/Linux) / CmdShiftE (Mac)2. 录制配置刷新页面录制: 点击刷新按…

作者头像 李华
网站建设 2026/9/7 11:30:15

警惕绿色积分陷阱!一分钟揭秘消费骗局

绿色消费积分爆火,但背后暗藏风险&#xff01;提醒身边人 别让“绿色”变“血色”&#xff01;正规模式&#xff1a;国家鼓励积分兑换&#xff0c;需有实体支撑&#xff0c;用户消费获积分&#xff0c;逐步释放兑换商品&#xff0c;三方共建保障价值。但骗局套路更需警惕&#…

作者头像 李华