作者|浙江大学 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 项目!