Calico:灵活的网络模式与 eBPF 数据平面
第一部分:当 BGP 不可行时 - IPIP 与 VXLAN 覆盖网络
虽然 BGP 模式性能极高,但在某些网络环境中,它并不可行。例如,许多公有云的网络架构可能会阻止虚拟机之间直接建立 BGP 对等体关系。为了在这种环境下依然能够使用 Calico,它提供了两种封装 (Encapsulation) 模式,即覆盖网络。
A. IPIP 模式 (IP-in-IP)
- 工作原理: 这是一种简单的三层隧道技术。当一个 Pod 的数据包需要跨节点传输时,Calico 会将这个原始的 IP 包,再封装进一个新的 IP 包里。这个外部 IP 包的源地址和目标地址,就是源节点和目标节点的 IP 地址。
- 特点:
- 封装开销相对较小(只增加了一个外部 IP 头)。
- 某些网络环境(或防火墙)可能会阻止或限制 IPIP 协议的流量。
B. VXLAN 模式 (Virtual Extensible LAN)
- 工作原理: 这与我们之前在 Flannel 中学到的原理相同。它会将原始的二层以太网帧,封装进一个标准的 UDP 包里。
- 特点:
- 兼容性极佳: 因为它使用的是标准的 UDP 协议,几乎可以穿透任何网络环境,不会被中间设备阻止。
- 封装开销比 IPIP 稍大(增加了 UDP 头)。
如何配置?
配置覆盖网络模式非常简单,通常只需在安装 Calico 时,修改其 Installation
CRD 即可。
# Calico Operator 的 Installation CRD 配置片段
apiVersion: operator.tigera.io/v1
kind: Installation
# ...
spec:
calicoNetwork:
ipPools:
- blockSize: 26
cidr: 192.168.0.0/16
# 将封装模式设置为 VXLAN 或 IPIP