作者|浙江大學 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 專案!