CNI之flannel介绍

CNI介绍

CNI 容器网络接口,设计用于任何的容器运行环境
CNI插件生态有两种:overlay、underlay

  • overlay模式:

    • 架构:在物理网络上再架构一个虚拟网络
    • 传输:传输形式:就是用一种传输协议封装另一种传输协议,将容器虚拟ip包作为数据,用宿主机ip进行再次封装,在底层网络传输(这种就是ip包再添加个ip头,在物理网络中传输)
    • 常见的 Overlay 网络插件有 Flannel(VXLAN 模式)、Calico(IPIP 模式)、Weave 等等
  • underlay模式 :要求容器的网络接口能够直接与底层网络进行通信

    • 架构形式:就是正常的物理网络
    • 传输形式:不需要再次封装,每个节点上都维护了路由表信息或转发表信息,

flannel(VXlan)介绍

flannel中有两个组件:

  • flannnel.1:新的虚拟网卡,封包解包
  • flanneld:一个代理,它会为所在主机从集群的网络地址空间中,获取一个小的网段 Subnet,本主机内所有容器的 IP 地址都将从中分配。同时 flanneld 监听 K8S 集群数据库,为 Flannel.1 设备提供封装数据时必要的 Mac,IP 等网络数据信息。

flannel特性:

  1. 不同node中的pod都有全局唯一ip
  2. 建立了一个覆盖网络(overlay),通过这个覆盖网络,将数据包原封不动传递到目标容器
    3.创建了新的虚拟网卡flannel.1
  3. etcd数据库保证所有node上flanneld看到的配置是一致的,同时每个node上flanneld监听etcd数据库变化,事实感知集群中node变化

一个情景

假设node1中的pod1要和node2中的pod2通信(node1、2不跨网,pod1通过pod2的ip访问pod2)

  1. pod1根据自己的路由表将包发给CNI0
  2. CNI0根据自己的路由表将包发给flannel.1
  3. flannel.1根据flanneld提供的IP、MAC信息进行内层封装
  4. linux内核进行外层封装
  5. 将包发给node2
  6. node2接受到包后,内核识别到这是一个vxlan,拆开后将包发给flannel.1设备
  7. flannel.1根据路由表将包发往CNI0
  8. CNI0根据ARP协议获得目标MAC地址,将包发给pod2

你可能感兴趣的:(CNI之flannel介绍)