作者|浙江大學 SEL 實驗室:晉晨、博雲:耿浩濤
審核&校對:海珠
編輯&排版:雯燕
背景
在近幾年的產業環境下,傳統雲計算能力已無法支撐起規模日趨龐大且異地分散的數據處理與計算需求,基於此,邊緣計算應勢而起。尤其是在 5G、物聯網等新技術的持續推動下,邊緣計算產業已然走向大風口。盡管目前邊緣計算發展已經進入實踐階段,但仍然存在一些問題,尤其是網絡成為邊緣計算落地的一個痛點。這是因為邊緣網絡和數據中心網絡有本質的不同:
-
邊緣環境一般是弱網環境,使用 5G,WiFi 等無線連接,延時大,丟包率高,不穩定。
-
邊緣節點一般沒有固定的公網地址,只能發起連接,不能接收連接。
-
邊緣網絡一般會使用的 Internet,它本身是一個不安全的網絡。
OpenYurt 是業界首個非侵入的邊緣計算雲原生開源項目,架構中的 Yurt-Tunnel 主要解決控制面的運維監控流量的雲邊通信。然而,OpenYurt 不准備自行解決跨公網的雲邊,邊邊的數據面通信的問題,希望可以和開源社區雲原生網絡相關的成熟解決方案合作(比如 FabEdge 社區),共同推動邊緣計算雲原生生態建設。
FabEdge 是一個專門針對邊緣計算場景設計的,基於 Kubernetes 的容器網絡方案,它符合 CNI 規范,可以無縫集成任何 Kubernetes 環境,解決邊緣計算場景下雲邊協同,邊邊協同等跨地域通訊的難題。
背景介紹 OpenYurt 與 FabEdge 集成
1)OpenYurt 搭建准備
阿里雲 ECS 服務節點
兩個雲端節點(master,cloud-node,操作系統:CentOS Linux release 7.9.2009 (Core)),處於同一個內網中,在雲端部署 Flannel(v0.14.0) 網絡插件。OpenYurt 集群組件:Yurt-Tunnel-Server,Yurt-Controllor-Manager。
兩個邊緣節點(edge-node1,edge-node2,操作系統同上)。OpenYurt 集群組件:Yurt-Tunnel-Agent,Yurt-Hub。
2)OpenYurt 與 FabEdge 集成部署
OpenYurt(v0.5.0) 部署參考:
OpenYurt 手動部署:
https://github.com/openyurtio/openyurt/blob/master/docs/tutorial/manually-setup.md
Kubernetes 一鍵轉換 OpenYurt:
https://github.com/openyurtio/openyurt/releases
OpenYurt 部署注意事項:
-
在部署 Yurt-Tunnel-Server 時,因為 Tunnel-Server 證書認證的 IP 默認為私網 IP,因此需要將 tunnel-server 中的 args 加入參數--cert-ips=tunnel-server,即 tunnel-server 所在節點的公網 IP;
-
相同的,在部署 Yurt-Tunnel-Agent 時,因為 Tunnel-Agent 需要和 Tunnel-Server 建立連接,因此需要在 Tunnel-Agent 中 args 加入參數--tunnelserver-addr,即 Tunnel-Server 所在節點的公網 IP 加上暴露的端口。
FabEdge 與 OpenYurt 集成參考:
https://github.com/FabEdge/fabedge/blob/main/docs/integrate-with-openyurt.md
FabEdge 驗證測試
集成環境總體分為兩種情況:雲端 Pod 訪問邊緣 Pod 以及邊緣 Service,邊緣 Pod 訪問雲端 Pod 以及 Service。
同時,我們考慮到 hostNetwork 網絡類型 Pod 對集群環境有着很大的依賴,故將 Pod 分為 hostNetwork 類型以及正常容器網絡類型兩種場景。
說明:在 Pod 訪問 Service 時,將其 Endpoint 中的 Pod 分為 hostNetwork 類型和正常容器類型 Pod。
總結
-
目前僅對跨公網的雲邊通信進行測試,功能基本滿足需求。后續會根據實際業務需求再展開跨公網的邊邊測試。
-
FabEdge 對邊緣環境中現存的容器網絡方案(如 flannel,calico)進行接管,同時雲端又需要部署完整的容器網絡方案,對存量用戶的升級可能帶來影響。
戳這里,立即了解 OpenYurt 項目!