15张图超硬核讲解 Kubernetes 网络,我不信网工不会看

如果本文对你有帮助,欢迎关注、点赞、收藏、转发给朋友,让我有持续创作的动力
Overview
本文将探讨kube.NETes中的网络模型,以及对各种网络模型进行分析 。
Underlay Network Model
什么是Underlay Network
底层网络 Underlay Network 顾名思义是指网络设备基础设施,如交换机,路由器, DWDM 使用网络介质将其链接成的物理网络拓扑,负责网络之间的数据包传输 。

15张图超硬核讲解 Kubernetes 网络,我不信网工不会看

文章插图
 
图:Underlay network topology
underlay network 可以是二层,也可以是三层;二层 underlay network 的典型例子是以太网 Ethernet,三层是 underlay network 的典型例子是互联网 Internet 。
而工作与二层的技术是 vlan,工作在三层的技术是由OSPF, BGP等协议组成
kubernetes中的underlay network
在kubernetes中,underlay network 中比较典型的例子是通过将宿主机作为路由器设备,Pod 的网络则通过学习成路由条目从而实现跨节点通讯 。
15张图超硬核讲解 Kubernetes 网络,我不信网工不会看

文章插图
 
图:underlay network topology in kubernetes
这种模型下典型的有 flannel 的 host-gw 模式与 calico BGP 模式 。
flannel host-gw
flannel host-gw 模式中每个Node需要在同一个二层网络中,并将Node作为一个路由器,跨节点通讯将通过路由表方式进行,这样方式下将网络模拟成一个underlay network 。
15张图超硬核讲解 Kubernetes 网络,我不信网工不会看

文章插图
 
图:layer2 ethernet topology
 
Notes:因为是通过路由方式,集群的cidr至少要配置16,因为这样可以保证,跨节点的Node作为一层网络,同节点的Pod作为一个网络 。如果不是这种用情况,路由表处于相同的网络中,会存在网络不可达
 
Calico BGP
BGP(Border Gateway Protocol)是去中心化自治路由协议 。它是通过维护IP路由表或'前缀'表来实现AS (Autonomous System)之间的可访问性,属于向量路由协议 。
15张图超硬核讲解 Kubernetes 网络,我不信网工不会看

文章插图
 
图: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 网络,我不信网工不会看

文章插图
 
图:Calico Network Architecture
IPVLAN & macVLAN
IPVLAN 和 MACVLAN 是一种网卡虚拟化技术,两者之间的区别为,IPVLAN 允许一个物理网卡拥有多个IP地址,并且所有的虚拟接口用同一个MAC地址;而 MACVLAN 则是相反的,其允许同一个网卡拥有多个MAC地址,而虚拟出的网卡可以没有IP地址 。
因为是网卡虚拟化技术,而不是网络虚拟化技术,本质上来说属于 Overlay network,这种方式在虚拟化环境中与Overlay network 相比最大的特点就是可以将Pod的网络拉平到Node网络同级,从而提供更高的性能、低延迟的网络接口 。本质上来说其网络模型属于下图中第二个 。