K8S的 CNI 详细原理以及解释
K8S的 CNI 详细原理以及解释
今天我们主要讲的是pod之间的网络--CNI
主要是分三种模式:
underlay :
pod创建慢,网络性能好
强烈依赖底层
calico-bgp =flannel -host-gw
overlay :pod创建速度快但是网络性能不太好,
Overlay(靠隧道打通(隧道技术),不依赖底层网络)->vxlan vlan
calico-ipip =flannel-vxlan
router : pod创建速度快同时网络性能也很好
Flannel 介绍:
Flannel 由CoreOS开发,用于解决docker集群跨主机通讯的覆盖网络(overlay network),它的主要思路是:预先留出一个网段,每个主机使用其中一部分,然后每个容器被分配不同的ip;让所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN/Host-GW等进行报文的封装和转发。
实现原理:
集群中的不同节点上,创建的Pod具有全集群唯一的虚拟IP地址。
建立一个覆盖网络(overlay network),通过这个覆盖网络,将数据包原封不动的传递到目标容器。覆盖网络通过将一个分组封装在另一个分组内来将网络服务与底层基础设施分离。在将封装的数据包转发到端点后,将其解封装。
创建一个新的虚拟网卡flannel0接收docker网桥的数据,通过维护路由表,对接收到的数据进行封包和转发(vxlan)。
etcd保证了所有node上flanned所看到的配置是一致的。同时每个node上的flanned监听etcd上的数据变化,实时感知集群中node的变化。
Calico:
calico-默认模式-ipip
- BGP 边界网关协议(Border Gateway Protocol, BGP):是互联网上一个核心的去中心化自治路由协议。
- Route Reflector 模式(RR)(路由反射):Calico 维护的网络在默认是(Node-to-Node Mesh)全互联模式,Calico集群中的节点之间都会相互建立连接,用于路由交换。但是随着集群规模的扩大,mesh模式将形成一个巨大服务网格,连接数成倍增加。这时就需要使用 Route Reflector(路由器反射)模式解决这个问题。(不要超过100台)
- IPIP模式:把 IP 层封装到 IP 层的一个 tunnel。作用其实基本上就相当于一个基于IP层的网桥!一般来说,普通的网桥是基于mac层的,根本不需 IP,而这个 ipip 则是通过两端的路由做一个 tunnel,把两个本来不通的网络通过点对点连接起来。
BGP:
一个自治系统就是处于一个管理机构控制之下的路由器和网络群组。它可以是一个路由器直接连接到一个LAN上,
同时也连到Internet上;它可以是一个由企业骨干网互连的多个局域网。在一个自治系统中的所有路由器必须相互连接,
运行相同的路由协议,同时分配同一个自治系统编号。自治系统之间的链接使用外部路由协议,例如BGP
AS是指在一个实体管辖下的拥有相同选路策略的IP网络。
每个AS都有唯一的自治系统编号,这个编号是由IANA分配的。
编号范围是1~65535(其中1到64511是注册的因特网编号,64512到65535是私有网络编号。
)
IBGP:运行于同一AS内部的BGP称为IBGP。
EBGP:运行于不同AS之间的BGP称为EBGP。
参考地址:
Calico 介绍:
https://www.jianshu.com/p/db18030c156a
BGP原理:https://blog.csdn.net/keith6785753/article/details/107088632/
Flannel host-gw and vlan and udp
更多推荐
所有评论(0)