🔏calico

type
status
date
slug
summary
tags
category
icon
password
Blocked by
Blocking
AI summary
  1. Felix它是一个 DaemonSet,负责在宿主机上插入路由规则(即:写入 Linux 内核的 FIB 转发信息库),以及维护 Calico 所需的网络设备等工作
  1. BIRD它就是 BGP 的客户端,专门负责在集群里分发路由规则信息
 
当一个pod创建时,Felix负责配置本地网络和安全策略,BIRD负责将pod的路由信息通告给其他的node,其他node的BIRD负责接收路由信息

直接路由模式(普通模式):

notion image
 

工作原理:

  • 直接在主机上配置路由规则
  • 数据包直接通过主机的默认网卡(如eth0)转发
  • 使用真实的源IP和目的IP进行通信,不做任何封装
  1. 具体路由示例:
这条规则表示:
  • 访问10.244.1.0/24网段的容器
  • 下一跳是192.168.1.2(目标容器所在的主机)
  • 通过eth0网卡直接发送

数据包流程:

  • 容器发出数据包
  • 根据路由规则,直接通过主机网卡发送
  • 目标主机收到后,再根据本地路由规则转发给目标容器

限制条件:

  • 要求所有主机必须在同一个二层网络
  • 因为需要通过ARP获取下一跳主机的MAC地址
 

IPIP模式:

notion image
IPIP模式下的路由信息传递仍然是通过BGP协议完成的。具体流程是:

路由信息的收集和分发:

  • Felix(Calico的agent)在每个节点上收集本地容器的路由信息
  • BIRD(BGP客户端)依然通过BGP协议在节点间分发这些路由信息
  • 路由信息会包含目的容器的网段和下一跳地址(目的容器所在节点的IP)

路由规则的特殊性:

  • 与普通BGP模式不同,IPIP模式下添加的路由规则会指向tunl0设备
  • 例如:10.233.2.0/24 via 192.168.2.2 tunl0
  • 这里tunl0是一个特殊的IP隧道设备,由Linux内核的IPIP驱动管理

数据包的处理流程:

  • 源容器发出的数据包会根据路由规则进入tunl0设备
  • IPIP驱动会在原始IP包外封装一层新的IP头
  • 外层IP包的目的地址就是路由规则中的下一跳地址
  • 数据包通过三层网络传输到目的节点后,再由IPIP驱动解封装
Prev
【Mysql学习笔记】索引篇
Next
如何构建一个短链系统
Loading...
Article List