Calico 的网络结构是什么?- 每天5分钟玩转 Docker 容器技术(68)

本文介绍了如何在两个主机上部署Calico网络,并通过运行容器来分析其网络结构。具体包括容器的网络配置、IP地址分配及主机间的路由设置。

上一节我们部署了 Calico 网络,今天将运行容器并分析 Calico 的网络结构。

在 host1 中运行容器 bbox1 并连接到 cal_net1:

docker container run --net cal_net1 --name bbox1 -tid busybox

查看 bbox1 的网络配置。

cali0 是 calico interface,分配的 IP 为 192.168.119.2。cali0 对应 host1 编号 11 的 interface cali5f744ac07f0

host1 将作为 router 负责转发目的地址为 bbox1 的数据包。

所有发送到 bbox1 的数据都会发给 cali5f744ac07f0,因为 cali5f744ac07f0  cali0 是一对 veth pair,bbox1 能够接收到数据。

host1 网络结构如图所示:

接下来我们在 host2 中运行容器 bbox2,也连接到 cal_net1:

docker container run --net cal_net1 --name bbox2 -tid busybox

IP 为 192.168.183.65

host2 添加了两条路由:

  1. 目的地址为 host1 容器 subnet 192.168.119.0/26 的路由。

  2. 目的地址为本地 bbox2 容器 192.168.183.65 的路由。

同样的,host1 也自动添加了到 192.168.183.64/26 的路由。

完成了上面这些准备工作,下一节我们将讨论 Calico 网络的连通性。

二维码+指纹.png

<think>嗯……用户这次提问非常聚焦,直接询问calico_backend的定义。从引用内容看,用户可能正在搭建Calico网络,遇到了需要配置后端的场景。之前提供的引用虽然提到Calico的网络模型(第3条引用强调它是纯三层实现)和容器通信限制(第2条引用),但确实没明确解释backend定义。 用户能准确提出这个术语,说明ta应该已经阅读过官方文档或配置模板。不过从引用内容看,用户参考的资料版本较旧(v2.6.10),可能需要提醒版本差异。考虑到用户之前关注过镜像下载和网络隔离问题,回答时需要把backend实现机制和网络隔离效果关联起来解释。 值得注意的细节是第3条引用提到Calico的NAT限制,这点在bird后端中特别重要——因为bird直接路由需要避免IP冲突。用户没问但可能潜在的疑问是:不同后端对IP地址规划的要求是否不同?所以回答里特意对比了bird和vxlan对IP重叠的容忍度差异。 用户连续两次询问Calico相关概念,可能是运维或开发人员正在部署生产环境。下次如果ta再问配置细节,可以补充说明calico_backend在calico.yaml里的具体字段位置。 </think>Calico 网络中的 `calico_backend` 是指 Calico 底层使用的**数据平面转发技术**,它决定了 Calico 如何实际处理和传输容器间的网络流量。核心定义如下: --- ### **`calico_backend` 的核心定义** `calico_backend` 是 Calico 的**后端数据平面实现方式**,主要负责: 1. **容器流量的实际转发**:处理容器发出的数据包如何路由到目标容器。 2. **网络策略的执行**:实现 Calico 的网络安全策略(如 ACL 规则)。 3. **跨主机通信机制**:定义不同节点间容器流量的封装或路由方式。 --- ### **常见 `calico_backend` 类型** #### 1. **`bird`(默认后端)** - **原理**:基于标准 **BGP 路由协议**,通过节点间的路由表同步实现容器直连。 - **特点**: - **纯三层路由**:无隧道封装,性能接近物理网络。 - **依赖路由表**:要求底层网络支持 BGP(如物理交换机或主机路由配置)。 - **IP 不重叠限制**:容器 IP 段不能与主机网络重叠[^3]。 - **适用场景**:数据中心内网、高性能集群。 #### 2. **`vxlan`** - **原理**:通过 **VXLAN 隧道**封装容器流量,在底层 IP 网络上构建 overlay 网络。 - **特点**: - **无视底层拓扑**:兼容任意二层/三层网络。 - **IP 可重叠**:容器 IP 段可独立于主机网络规划。 - **性能损耗**:封装/解封装带来约 10-15% 的带宽开销。 - **适用场景**:公有云、混合云等网络受限环境。 #### 3. **`windows`** - **专用后端**:针对 Windows 节点的 HNS(Host Network Service)实现,支持 VXLAN 或 BGP。 --- ### **配置示例(Calico 配置文件)** 在 Calico 的全局配置中指定后端类型: ```yaml apiVersion: projectcalico.org/v3 kind: IPPool metadata: name: default-pool spec: cidr: 192.168.0.0/16 ipipMode: Never # 关闭 IPIP 隧道 vxlanMode: Always # 启用 VXLAN 后端 natOutgoing: true ``` --- ### **关键区别总结** | 特性 | `bird` (BGP) | `vxlan` | |---------------|--------------------|--------------------| | **通信机制** | 直接路由 | 隧道封装 | | **性能** | ⭐⭐⭐⭐(接近裸机) | ⭐⭐⭐(有损耗) | | **网络要求** | 需支持 BGP/路由 | 无特殊要求 | | **IP 规划** | 禁止与主机网段重叠 | 可重叠 | | **典型场景** | 私有数据中心 | 公有云、跨网段环境 | --- ### **相关问题** 1. Calico 的 `bird` 后端在公有云环境中可能遇到什么问题?如何解决[^3]? 2. 如何验证 Calico 当前使用的 `calico_backend` 类型? 3. VXLAN 模式下 Calico 如何保证跨子网容器通信的安全性[^2]? 4. BGP 后端是否需要额外的路由反射器(Route Reflector)?什么场景下需要部署? [^1]: Calico 节点通过 etcd 同步状态,后端类型影响跨节点流量转发机制。 [^2]: VXLAN 通过隔离 VNI 实现网络分段,需配合 NetworkPolicy 实现精细控制。 [^3]: BGP 后端要求容器 IP 段独立,避免与主机网络冲突导致路由异常。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值