news 2026/4/23 11:07:16

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/4/21 10:54:08

梦幻西游,星界云手机搬砖全攻略

兄弟们&#xff0c;你们是不是也被车迟副本的答题环节逼疯过&#xff1f;手动五开刷个副本&#xff0c;光答题就得半小时&#xff0c;结果最后捡箱子还总被抢&#xff1f;别慌&#xff01;今天手把手教你怎么用星界云手机实现10开挂机&#xff0c;实测有效。 一、副本入门避坑指…

作者头像 李华
网站建设 2026/4/17 6:42:50

AI Agent学习路线:2026年最新万字长文,从入门到精通,手把手带你成为大模型领域专家!

简介 本文全面解析了大模型Agent的概念、组成与工作流程。Agent作为能自主决策的软件系统&#xff0c;由LLM推理规划、工具模块和记忆模块构成&#xff0c;通过感知、推理、决策、执行和反馈完成复杂任务。文章详细探讨了各部分面临的技术痛点&#xff0c;如推理能力不足、工具…

作者头像 李华
网站建设 2026/4/18 3:42:35

9、Linux文件权限管理与进程管理指南

Linux文件权限管理与进程管理指南 1. 文件所有权管理 在Linux系统中,每个创建的文件或目录都属于一个用户和一个组,分别称为文件所有者和文件组所有者。文件或目录的所有权可以由root用户或文件所有者修改,而组所有权只能由root用户或文件所有者修改,且仅限于他们所属的组…

作者头像 李华
网站建设 2026/4/18 0:42:02

12、进程管理与CentOS网络管理全解析

进程管理与CentOS网络管理全解析 1. 进程管理 在操作系统中,进程管理是一项至关重要的任务。它涉及到对进程的各种操作,如将前台进程挂起至后台、管理后台作业等。 1.1 将前台进程挂起至后台 可以通过以下两个步骤将前台进程移动到后台: 1. 按下 Ctrl + Z ,这会将进…

作者头像 李华
网站建设 2026/4/18 3:00:38

14、CentOS网络管理与安全远程操作指南

CentOS网络管理与安全远程操作指南 1. 网络接口管理 在CentOS系统中,我们可以使用 nmcli 命令来管理网络接口,以下是一些常用操作: - 禁用所有受管理的网络接口: $ nmcli net off临时断开设备以关闭某个网络接口,例如关闭 enp0s8 接口: $ nmcli dev dis enp0s8…

作者头像 李华