cilium 官方文档翻译(4) 路由

Encapsulation 数据封装

当没有提供配置时,Cilium会自动在此模式下运行,因为它是对底层网络基础设施要求最少的模式。

在此模式下,所有集群节点使用基于UDP的封装协议VXLANGeneve形成一个隧道网络。Cilium节点之间的所有通信都被封装。

对基础网络的需求

  • 封装依赖于基础网络上的节点间可以正常连接。这意味着,如果Cilium节点已经可以相互连接,则所有路由要求都已经满足。
  • 底层网络和防火墙必须允许封装的数据包:
封装模式Port Range / Protocol
VXLAN (Default)8472/UDP
Geneve6081/UDP

优点

简单

集群节点的网络不需要知道PodCIDR。群集节点可以在多个路由或链路层域中。只要集群节点可以使用IP/UDP相互通信,cilium并不关心底层网络的拓扑。

地址空间丰富

由于不依赖于任何底层网络限制,并且如果相应地配置PodCIDR可用地址空间非常丰富,它几乎允许每个节点运行任意数量的POD。

自动配置

当与编排系统(如Kubernetes)一起运行时,集群中所有节点的列表(包括其关联的分配前缀节点)将自动提供给每个对应的agent。加入集群的新节点将自动合并到网格中。

身份上下文

封装协议允许网络数据包中携带元数据。Cilium利用这种能力传输元数据,如源安全标识。身份传输是一种优化,旨在避免在远程节点上重复查找一个身份。

缺点

MTU 超长

由于添加了封装头,有效负载可用的MTU低于本机路由(VXLAN每个网络数据包50字节)。这导致网络连接的最大吞吐量变低。这可以通过启用 jumbo frame(普通帧每1500字节50字节的封装头, jumbo frame每9000字节50字节开销)来减少网络吞吐量的性能损耗。

Native-Routing 本地路由

cilium本机路由数据路径通过配置tunnel:disabled启用,同时需要配置操作系统启用本机数据包转发模式。本机数据包转发模式利用Cilium运行的网络的路由功能,而不是执行封装。

image

在本机路由模式下,Cilium将所有未寻址到另一个本地端点的数据包委托给Linux内核的路由子系统。这意味着数据包将被路由,就好像本地进程已经发出了数据包一样。因此,连接集群节点的网络必须能够路由PodCIDR。

配置本机路由时,Cilium会自动在Linux内核中启用IP转发。

对基础网络的需求

  • 为了运行本机路由模式,连接运行Cilium的主机的网络必须能够使用提供给POD或其他工作负载的地址转发IP流量。

  • 节点上的Linux内核必须知道如何将数据包转发给运行Cilium的节点上的POD或其他工作负载。这可以通过两种方式实现:

  • 节点本身不知道如何路由所有pod IP,但网络上存在一个路由器,该路由器知道如何到达所有其他pod。在此场景中,Linux节点把默认路由指向该路由器。此模型用于云提供商网络集成。有关更多详细信息,请参阅谷歌云、AWS ENI和Azure IPAM。

  • 每个单独的节点都知道所有其他节点的所有pod IP,并将路由插入Linux内核路由表,这样每个节点都知道所有pod的路由。如果所有节点共享一个L2网络,则可以通过启用选项auto-direct-node-routes: true来解决路由发现的问题。否则,则需要运行额外的系统组件(如BGP守护进程)来分发路由。有关如何使用kube-router项目实现这一点,请参阅使用kube-router运行BGP指南

配置

如果想要使用本地路由数据路径,则需要对cilium做以下配置:

  • tunnel: disabled: 开启本地路由模式
  • ipv4-native-routing-cidr: x.x.x.x/y: 配置要执行本地路由的CIDR

参考

  1. 原文 https://docs.cilium.io/en/v1.11/concepts/networking/routing/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值