如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力
Overview
本文将探讨kube.NETes中的网络模型,以及对各种网络模型进行分析 。
Underlay Network Model
什么是Underlay Network
底层网络 Underlay Network 顾名思义是指网络设备基础设施,如交换机,路由器, DWDM 使用网络介质将其链接成的物理网络拓扑,负责网络之间的数据包传输 。
![15张图超硬核讲解 Kubernetes 网络,我不信网工不会看](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F1120%2Fbb3122a0j00rllukr000ec000cl0055g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
图:Underlay network topology
underlay network 可以是二层,也可以是三层;二层 underlay network 的典型例子是以太网 Ethernet,三层是 underlay network 的典型例子是互联网 Internet 。
而工作与二层的技术是 vlan,工作在三层的技术是由OSPF, BGP等协议组成
kubernetes中的underlay network
在kubernetes中,underlay network 中比较典型的例子是通过将宿主机作为路由器设备,Pod 的网络则通过学习成路由条目从而实现跨节点通讯 。
![15张图超硬核讲解 Kubernetes 网络,我不信网工不会看](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F1120%2F01f8dbf4j00rlluks000oc000hs009dg.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
图:underlay network topology in kubernetes
这种模型下典型的有 flannel 的 host-gw 模式与 calico BGP 模式 。
flannel host-gw
flannel host-gw 模式中每个Node需要在同一个二层网络中,并将Node作为一个路由器,跨节点通讯将通过路由表方式进行,这样方式下将网络模拟成一个underlay network 。
![15张图超硬核讲解 Kubernetes 网络,我不信网工不会看](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F1120%2F8602b77dj00rllukt0008c000820068g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
图:layer2 ethernet topology
Notes:因为是通过路由方式,集群的cidr至少要配置16,因为这样可以保证,跨节点的Node作为一层网络,同节点的Pod作为一个网络 。如果不是这种用情况,路由表处于相同的网络中,会存在网络不可达
Calico BGP
BGP(Border Gateway Protocol)是去中心化自治路由协议 。它是通过维护IP路由表或'前缀'表来实现AS (Autonomous System)之间的可访问性,属于向量路由协议 。
![15张图超硬核讲解 Kubernetes 网络,我不信网工不会看](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F1120%2Fa9826639j00rllukt000gc000de005ng.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
图:BGP network topology
与 flannel 不同的是,Calico 提供了的 BGP 网络解决方案,在网络模型上,Calico 与 Flannel host-gw 是近似的,但在软件架构的实现上,flannel 使用 flanneld 进程来维护路由信息;而 Calico 是包含多个守护进程的,其中 Brid 进程是一个 BGP 的客户端 与路由反射器(Router Reflector),BGP 客户端负责从 Felix 中获取路由并分发到其他 BGP Peer,而反射器在BGP中起了优化的作用 。在同一个IBGP中,BGP客户端仅需要和一个 RR 相连,这样减少了AS内部维护的大量的BGP连接 。通常情况下,RR 是真实的路由设备,而 Bird 作为 BGP 客户端工作 。
![15张图超硬核讲解 Kubernetes 网络,我不信网工不会看](https://nimg.ws.126.net/?url=http%3A%2F%2Fdingyue.ws.126.net%2F2022%2F1120%2F616a5e37j00rlluku000sc000hc0091g.jpg&thumbnail=660x2147483647&quality=80&type=jpg)
文章插图
图:Calico Network Architecture
IPVLAN & macVLAN
IPVLAN 和 MACVLAN 是一种网卡虚拟化技术,两者之间的区别为,IPVLAN 允许一个物理网卡拥有多个IP地址,并且所有的虚拟接口用同一个MAC地址;而 MACVLAN 则是相反的,其允许同一个网卡拥有多个MAC地址,而虚拟出的网卡可以没有IP地址 。
因为是网卡虚拟化技术,而不是网络虚拟化技术,本质上来说属于 Overlay network,这种方式在虚拟化环境中与Overlay network 相比最大的特点就是可以将Pod的网络拉平到Node网络同级,从而提供更高的性能、低延迟的网络接口 。本质上来说其网络模型属于下图中第二个 。
- 虚拟网桥:创建一个虚拟网卡对(veth pair),一头栽容器内,一头栽宿主机的root namespaces内 。这样一来容器内发出的数据包可以通过网桥直接进入宿主机网络栈,而发往容器的数据包也可以经过网桥进入容器 。
- 多路复用:使用一个中间网络设备,暴露多个虚拟网卡接口,容器网卡都可以介入这个中间设备,并通过MAC/IP地址来区分packet应该发往哪个容器设备 。
推荐阅读
- 张择端清明上河图超清 张择端仇英《清明上河图》释惑解读
- 盛明兰|知否:盛明兰为何能当家做主?看看盛老太太的硬核姐妹都教了什么
- 红色特工|电影《红色特工》正式开机 硬核开启谍战世界
- 人力资源|“职场遇到骚扰怎么办?”妹子教你如何硬核回怼!哈哈哈
- 真三国无双5硬核实用攻略 三国无双攻略
- 硬核科普 男人阴茎标准
- 豆瓣|俄罗斯最硬核的战争电影,演员全部都是雇佣兵,豆瓣评分8.2分
- 时代峰峻|海外粉丝称时代少年团抄袭,团名和前辈团相似,时代峰峻硬核回复
- 肖战|肖战温柔的外表,硬核的灵魂,一套造型近两个月,是无声的态度
- 王鹤棣|网友偶遇王鹤棣回自家炸串店,性格接地气没架子,怼脸生图超抗打