iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 4
0

昨天裝了flannel 這個cni
現在來記錄一下什麼是flannel
才不會一路裝一些不太清楚的東西

官網參考

k8s 中需要網路通訊的類別有以下四種

  1. pod 中container 互相通訊
  2. pod 與 pod 之間互相通訊
  3. pod 與 service 之間互相通訊
  4. service 與外部網路之間的通訊

也就是我們需要用軟體來建構一種虛擬網路,讓外部的封包能夠知道該往何處去
這種虛擬網路又叫overlay network
也就是他是架構在已有的基礎網路之上
再去做轉送的配置。
既然是一種網路 他就會配自己自已的IP 所以網路上的圖會像下面這樣

CNI (container network interface)

其中k8s 允許我們自己安裝一些third praty的外掛(plugin)
這些外掛要幹麻呢
最重要的功能就是 add/delete pod

這些plugin 又被歸類為 CNI
現在的spec 為0.4.0 版
其中cni 的設計必需符合spec ,詳請見官網參考

而cni 的plugin 有很多種

今天先看一下flannel 的運作方式
借圖來源


假設上面的pod 叫做pod1 下面的pod 叫做pod2

當pod1 要與pod2做通訊的時候
可以看到pod 1 裡面有個web app 要將封包送往pod2 的backend service

一開始先透過docker 建置的veth0 送到docker bridge送到flannelID
flannel 就會將這個封包進行再一次的封裝,
可見圖中的PACKET 封包,有OUTER IP 即 INNER IP ,
其中有目標flannel的ip
在送到目標flannelID 之後就會對這個封包解析,取出原本的地址後送達原目標ip


上一篇
用kubeadm 開始佈署 k8s (1)
系列文
從k8s 到service mesh 微服務管理從0開始4

尚未有邦友留言

立即登入留言