容器网络-Underlay和Overlay

一、主机网络

前面讲了容器内部网络,但是容器最终是要部署在主机上,跨主机间的网络访问又是怎么样的,跨主机网络主要有两种方案。

二、 Underlay

使用现有底层网络,为每一个容器配置可路由的网络IP。也就是说容器网络和主机网络没什么区别,主机都能识别容器ip。

2.1 部署

  1. 采用Linux 网桥设备(sbrctl),通过物理网络连通容器;
  2. 创建新的网桥设备 mydr0;
  3. 将主机网卡加入网桥;
  4. 把主机网卡的地址配置到网桥,并把默认路由规则转移到网桥mydr0;
  5. 启动容器;
  6. 创建veth对,并且把一个 peer 添加到网桥 mydr0;
  7. 配置容器把veth的另一个peer分配给容器网卡;

2.1 架构图

容器网络-Underlay和Overlay_第1张图片

Underlay网络使用现有底层网络,为每一个容器配置可路由的网络IP。但是有一个局限性,我们知道容器会使用很多的ip,如果使用Underlay网络,会占用很多底层网络的ip,所以,使用Underlay网络需要提前合理规划ip分配。

三、Overlay

Overlay网络是通过网络封包技术实现的。

3.1 VXLAN

容器网络-Underlay和Overlay_第2张图片
在每个主机上都有一个VTEP设备,用于对原始数据包的封包和解包。
容器网络-Underlay和Overlay_第3张图片

VTEP设备对容器发送的原始数据包进行了以下“包装”:

  1. VXLAN Header
    增加VXLAN头(8字节),其中包含24比特的VNI字段,用来定义VXLAN网络中不同的租户。此外,还包含VXLAN
    Flags(8比特,取值为00001000)和两个保留字段(分别为24比特和8比特)。
  2. UDP Header VXLAN头和原始以太帧一起作为UDP的数据。UDP头中,目的端口号(VXLAN
    Port)固定为4789,源端口号(UDP Src. Port)是原始以太帧通过哈希算法计算后的值。
  3. Outer IP Header 封装外层IP头。其中,源IP地址(Outer Src.
    IP)为源VM所属VTEP的IP地址,目的IP地址(Outer Dst. IP)为目的VM所属VTEP的IP地址。
  4. Outer MAC Header 封装外层以太头。其中,源MAC地址(Src. MAC
    Addr.)为源VM所属VTEP的MAC地址,目的MAC地址(Dst. MAC
    Addr.)为到达目的VTEP的路径中下一跳设备的MAC地址。

3.2 Flannel

Flannel网络插件使用的就是VXLAN技术
容器网络-Underlay和Overlay_第4张图片
flanneld相当于VTEP设备,用来封包解包。

你可能感兴趣的:(云原生,网络,容器,kubernetes)