Openshift 網絡v3.11


OKD使用SDN(軟件定義網絡)提供集羣網絡,實現集羣POD之間的通信。Openshift SDN使用Open vSwitch(OVS)配置覆蓋網絡。

三種插件類型

ovs-subnet:默認插件,提供一個‘平面’網絡,所有POD和POD與Service都可以相互通信。

ovs-multitenant:多租戶插件,提供了不同項目POD與Service隔離,每個項目都有一個唯一的VNID(虛擬網絡ID),通過VNID標識分配給POD的流量,不同VNID之間的POD無法通信。
其中VNID 0是個特例,它可以與集羣所有POD相互通信,即允許任何流量進入和流出。在OKD中,default項目是VNID 0,特殊服務如router、docker-registry均在該項目內,以便提供全局訪問。

ovs-networkpolicy:允許集羣管理員自定義網絡策略。
參考:https://docs.okd.io/latest/admin_guide/managing_networking.html#admin-guide-networking-networkpolicy

Masters設計

在OKD Masters上,OpenShift SDN維護一個存儲在etcd中的節點註冊表。當註冊新節點時,OpenShift SDN會從羣集網絡中分配未使用的子網,並將此子網存儲在註冊表中。刪除節點後,OpenShift SDN會從註冊表中刪除子網,並認爲可以再次分配子網。

使用ovs-multitenant插件時,OpenShift SDN主機還會監視項目的創建和刪除,併爲它們分配VXLAN VNID,這些VNLAN稍後將被節點用於正確隔離流量。

Nodes設計

在Node上,OpenShift SDN首先在Master註冊表中將本地主機與SDN主機註冊,爲該Node分配子網。
接下來,OpenShift SDN創建並配置三個網絡設備:

br0:pod容器將連接到的OVS橋接設備。
tun0:OVS內部端口(端口2打開br0)。分配集羣子網網關地址,並用於外部網絡訪問。OpenShift SDN配置netfilter和路由規則,以允許通過NAT從集羣子網訪問外部網絡。
vxlan_sys_4789:OVS VXLAN設備(端口1打開br0),提供對遠程節點上的容器的訪問。

每次在主機上啓動pod時,OpenShift SDN:
1.從Node的集羣子網中爲pod分配一個空閒IP地址。
2.將pod的veth pair的主機端連接到OVS橋接設備br0。
3.將OpenFlow規則添加到OVS數據庫,以將發往新pod的流量路由到正確的OVS端口。
4.在ovs-multitenant插件的情況下,添加OpenFlow規則來標記具有VNID的pod的流量,並且如果流量的VNID與pod的VNID匹配(或者是特權VNID 0),則允許流量進入pod。(默認會過濾掉不匹配的流量)

OpenShift SDN Node還會監視SDN Master的子網更新。添加新子網時,Node在br0添加OpenFlow規則,以便遠程子網中具有目標IP地址的數據包轉到vxlan0(端口1打開br0),從而進入網絡。ovs-subnet插件通過VXLAN發送VNID 0的所有數據包,但ovs-multitenant插件使用適當的VNID作爲源容器。

Pod網絡數據流向

假設您有兩個容器A和B,其中容器A的eth0的veth pair名稱爲vethA,容器B的eth0的veth pair名稱爲vethB。
1.現在假設容器A在本地主機上,容器B也在本地主機上。然後從容器A到容器B的數據包流如下:
eth0(在A的網絡中)→ vethA → br0 → vethB → eth0(在B的網絡中)

2.假設容器A位於本地主機上,而容器B位於集羣網絡上的遠程主機上。然後從容器A到容器B的數據包流如下:
eth0(在A的網絡中)→ vethA → br0 → vxlan0 → (此後爲B設備) → vxlan0 → br0 → vethB → eth0(在B的網絡中)

3.如果容器A連接到外部主機,則流量如下所示:
eth0(在A的網絡中)→ vethA → br0 → tun0 →(NAT)→ eth0(物理設備)→Internet

幾乎所有數據包傳送決策都是使用OVS網橋br0中的OpenFlow規則執行的,這簡化了插件網絡架構並提供了靈活的路由。對於ovs-multitenant插件,這也提供了可執行的網絡隔離。

參考文檔:
https://docs.okd.io/latest/architecture/networking/sdn.html#architecture-additional-concepts-sdn

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