前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谈谈Kubernets纯种三层网络

谈谈Kubernets纯种三层网络

作者头像
shysh95
发布2023-08-23 09:58:25
1660
发布2023-08-23 09:58:25
举报
文章被收录于专栏:shysh95shysh95

Flannel host-gw模式

host-gw模式就是将每个Flannel子网的下一跳设置成该子网对应宿主机的IP地址,该主机会充当容器通信路径里的网关。

当我们从容器10.244.0.2去访问10.244.1.3的容器时,当数据包走到cni0网桥时会根据宿主机的路由表发现,吓一跳是10.168.0.3,也就是目的容器的宿主机,此时eth0设备会使用下一跳地址对应的MAC地址作为该数据帧的目的MAC地址,从而到达对端容器的宿主机。

hots-gw的优势

host-gw模式下避免了额外的封包和解包的性能损耗。

Flannel host-gw路由信息的维护

需要通过Etcd和宿主机上的flanneld进程。

BGP是什么?

BGP是边界网关协议,是Linux原生支持的专门用在大型数据中心里维护不同自治系统之间路由信息的、无中心的路由协议。

什么是边界网关

把自治系统连接在一起的路由器称之为边界网关,它的路由表里面拥有其他自治系统里面的主机路由信息。如下图的Router1和Route2。

使用了BGP之后,每个边界网关上都会运行着一个小程序,它们会将各自的路由表信息通过TCP传输给其他的边界网关,其他边界网关上的小程序会对收到的这些数据进行分析,然后将需要的信息添加到自己的路由表里。

Calico项目组成

  • Calico的CNI插件:与Kubernetes对接部分
  • Felix:DaemonSet,负责在宿主机上插入路由规则,维护Calico所需的网络设备等工作
  • BIRD:BGP客户端,负责在集群里分发路由规则信息

Calico不会在宿主机上创建任何网桥设备,但是Calico的CNI插件会创建一个Veth Pair设备,以便容器内的数据包出现在宿主机上,从而通过宿主机的路由表到达目的容器。

在宿主机上可以通过路由表找到下一跳路由地址,下一跳的路由规则由Felix进行维护,而路由规则信息则通过BIRD进行获得。

Calico如何获取全局路由信息

默认情况下,Calico采用的是Node-to-Node Mesh的模式,该模式要求每台宿主机的BGP Client和其他节点进行通信以便交换路由信息,比较适合100节点以下的集群。

另一种则是Route Reflector模式,该模式下会选取一个或者几个专门的节点,来负责跟所有的节点建立BGP连接从而学习到全局的路由信息,其他节点只需要跟这几个专门的节点交换路由信息即可获取全局的路由信息。

IPIP模式

当源主机和目的主机网络不通时,则需要开启IPIP模式,如下图:

在IPIP模式下,Felix进程会在Node1上天界路由规则,如下:

代码语言:javascript
复制
10.233.2.0/24 via 192.168.2.2 tunl0 

发往192.168.2.2的设备从etho0变为tunl0,tunl0设备是IP隧道设备,IP包进入tunl0设备后,会重新进行封装,新封装的IP包的目的地址是192.168.2.2(目的主机IP),这样通过后续的下一跳路由器从而到达目的主机,目的主机的IPIP驱动会进行解包,得到原始的数据包,经过路由规则和Veth Pair设备进入目的容器。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2023-06-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员修炼笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档