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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章