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

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 都能通过简洁的设计提供稳定高效的网络能力,是容器网络方案的优质选择。

http://www.cnnetsun.cn/news/64310.html

相关文章:

  • 一张学术海报10分钟搞定:PPT手把手攻略+97套免抠素材随领
  • 【论文辅导 | 一对一辅导】大小论文双通关:开题报告+SCI投稿一次讲透,导师没点破的门道我们拆解给你
  • Flink学习笔记:多流 Join
  • AI产品经理必读:构建智能交互系统的终极指南!
  • 谷歌浏览器性能面板使用指南
  • 警惕绿色积分陷阱!一分钟揭秘消费骗局
  • 13、CentOS网络管理全攻略
  • 技术实践:用大模型平台重构医疗数据分析Pipeline
  • 智元AGIBOT荣登具身智能机器人技术研发排行榜TOP1
  • Gitee vs GitHub 2025深度评测:国产代码托管平台的崛起与超越
  • JVM 安全与沙箱深度解析
  • t-SNE快速降维算法详解与实现
  • Python编程入门从零开始掌握基础语法一
  • 20、BusyBox:嵌入式系统的强大工具
  • python 生成psd文件
  • 25、Linux内核调试全攻略:挑战与解决方案
  • 30、Linux移植与实时性:从定制平台到实时系统的深入解析
  • 【界面案例】火语言RPA读取Excel文件,循环写入界面表格
  • 【JAVA进阶】鸿蒙开发与SpringBoot深度融合:从接口设计到服务部署全解析
  • [C#][winform]基于yolov11的水下目标检测系统C#源码+onnx模型+评估指标曲线+精美GUI界面
  • 【睿擎派】云端一体,多种通信协议构建机械臂运动控制系统
  • 4.1用户空间RTOSAPI
  • 11、嵌入式Linux开发:内核日志存储、追踪系统与设备树管理
  • 17、Yocto项目软件层与应用开发全解析
  • 宁波紧固件产业集群的外向型制造与装备升级路径
  • AI赋能工业4.0:数据堂一站式数据服务加速制造智能化落地
  • 如何打造吸睛动态头像?GIF动态头像制作指南
  • 评估AI的终极答案:LLM-As-a-Judge!AI时代,谁来评判AI?答案是AI自己!
  • Meta封闭技术大门:开源先锋为何倒向闭源阵营?
  • HRNet:深度高分辨率表示学习用于人体姿态估计-k学长深度学习专栏