HC Bridge:基於L2模式的開源容器網絡

近日,諧雲發佈了基於LinuxBridge的Kubernetes網絡組件HCBridge,並正式將其在Github上開源。相比於Overlay網絡和三層網絡模式,L2的網絡模式更加能夠適應網絡安全監管的要求。項目地址爲https://github.com/harmonycloud/hcbridge
在這裏插入圖片描述
至於爲什麼還要HCBridge?相比於Kubernetes自帶的BridgeCNI,HC Bridge完善了VLAN的功能,使得容器網絡能夠按照Namespaces、Servic劃分不同的VLAN和IP地址範圍,細化IP地址監控和管理。雖然一些BGP的容器網絡也具備ServiceSpecIPPool的功能,但是需要精細管理服務IP地址和提高資源的使用率,IP地址分配不能夠影響資源的調度,最後會導致Pod路由會分散在不同的主機,路由條目無法聚合,路由條目數量是成爲集羣的規模的瓶頸。

社區overlay和路由的三層CNI較多,而L2相關的容器網絡較少被提及,而在實際的應用過程中,L2由於對底層物理環境和網絡環境有依賴,遇到問題也更加難以排查,希望通過開源HCBridge容器網絡,一起分享和討論諧雲科技在實踐L2容器網絡遇到的問題和解決方法。

對於高可用物理組網結構,當物理主機雙網卡運行在bond1模式,在雙上聯主機連接不同的交換機設備時,發生主備網絡切換,會導致外部無法正常的訪問Pod;HCBridge通過利用Linuxnotify的機制,通過內核模塊監聽主備網卡切換時間,然後通知應用進程,在Bridge所連接Pod所在的ns發送GratuitousARP,更新交換機Mac:Port映射關係,使得容器網絡在出現物理網線故障、交換機掉電的情況下能夠實現故障秒級切換。

對於ClusterIP,由於ClusterIP主要是使用IPVS或者IPTABLES實現的,在啓用LinuxBridge開啓VLANfilter之後,在經過Netfilter的DNAT之後是會導致VLANtag、目的Mac和交換機的端口匹配不上,所以需要ClusterIP時,無法使用VLANfilter。
在這裏插入圖片描述
如圖所示HCBridge主要由以下四個組件:

  • HC-bridgecni-負責在主機上創建和配置linux網橋的CNI插件。
  • HC-ipam-負責分配IP地址的組件,使用ETCD存儲。
  • network-controller-組件提供IP池配置restfulapi,監聽kubernetes
    APIServer事件以回收異常的IP。
  • HADaemon–監控高可用組網結構下的主備網卡切換,能夠讓容器網絡能夠感知物理主備網卡故障切換。

目前HCBridge已經在github上開源,HCBridge安裝雖然比較簡單,但是由於需要使用真實IP地址,會導致安裝體驗會相對其他overlay和路由模式的CNI略顯複雜,我們也會致力於優化快速按照體驗。近期工作主要實現以下目標:

  • 在CNI層面支持IPv6雙棧,由於公網IPv4地址已經耗盡,爲了平滑過渡到IPv6,雙棧無疑是最好的選擇;
  • 豐富IPAM的功能,支持浮動IP,隨着有狀態服務也逐漸遷移到容器浮動IP的需求也越來越多;
  • 在啓用VLANfilter的情況下支持ClusterIP,對於使用Dubbo、SpringCloud的應用,對ClusterIP需求雖然不強烈,但是就需要其他方式來替代Kubernetes自帶的負載均衡方式,增加了運維的工作量。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章