2021 年 8 月 2 日,博云正式开源 FabEdge 边缘网络方案。FabEdge 是一款基于 kubernetes 和 kubeedge 构建的开源网络方案,解决边缘计算场景下,容器网络配置管理复杂、网络割裂互不通信、缺少服务发现、缺少拓扑感知能力、无法提供就近访问等难题。
并且,Fabedge 支持弱网环境,如4/5G,WiFi,LoRa 等;支持边缘节点动态 IP 地址,适用于物联网,车联网等场景。
目前,FabEdge 项目代码已在Github上开源,项目地址为:https://github.com/FabEdge/fa...。项目使用 Apache 2.0 协议,欢迎更多技术开发者和爱好者前去试用和使用。
01
Features 五大特性
• Kubernetes 原生支持:完全兼容的 Kubernetes API ,无需额外开发,依赖较少的通用开源组件,即插即用。
• 边缘容器网络管理:为边缘节点实现网络地址段管理,以及边缘容器网络地址分配。
• 边云协同/边边协同:通过隧道技术打通边缘容器与云端容器,以及边缘节点间容器的相互安全通信,实现边云协同和边边协同。
• 边缘 “ 社区 ”:使用“社区” CRD 自定义资源控制哪些边缘节点可以互相通讯。
• 就近访问:优先使用本地服务,其次使用云端服务。
02
Advantages 三大优势
标准 —— 完全兼容 k8s api, 即插即用支持任何标准 k8s 集群;
安全 —— 所有通讯使用基于证书的 IPSEC 隧道;
易用 —— 使用 Operator 机制,最少化的人工运维代价。
03
How it works?
云端是标准 Kubernete 集群,可以使用任何 CNI 网络插件,比如 Calico。在集群里运行 KubeEdge 云端组件 cloudcore,在边缘节点运行 KubeEdge 边缘组件 edgecore ,边缘节点注册到云端集群,
Fabedge有三个组件组成,分别是:Operator、 Connector 和 Agent。
Operator 运行在云端集群,监控节点,服务等资源变化,动态为边缘节点维护configmap ,同时为每个边缘节点生成 Agent ;Connector 运行在云端,负责云端网络配置管理,并在云端和边缘节点转发流量;而 Agent 消费 configmap 信息,动态维护本节点隧道、路由、iptables 等网络配置。
FabEdge利用两个通道实现云边数据交换,一个是kubeedge管理的websock/quic 通道,用于控制信令;另一个是 FabEdge 自身管理的加密隧道,用于应用之间的数据传输。
Operator 在云端监听 node、service、endpoint 等 k8s 资源,为每个边缘节点生成一个 configmap,包含本节点的子网、隧道、负载均衡等相关配置信息。同时 operator 负责为每个边缘节点生成相应的 pod,用于启动本节点上的agent。
Connector 负责终结到边缘节点加密隧道,在云和边缘节点进行流量转发。它依赖云端CNI插件将流量转发到 connector 以外的节点,目前支持的云端 CNI 插件是 callico 。
边缘节点使用社区 CNI 插件 bridge 和 host-local,是使用社区 node-local-dns 地址解析功能,负责本节点的域名解析和缓存。
每个边缘节点运行一个 agent ,消费本节点对应 configmap,包括以下功能:
管理本节点 CNI 插件的配置文件
管理本节点安全隧道
管理本节点的负载均衡信息,会优先使用本地服务后端,其次是用云端后端
04
FabEdge vs Calico/Flannel
Fabedge 不同与 Calico,Flannel 等标准 Kubernetes 网络插件。这些插件主要应用在数据中心,解决 kubernetes 集群内部网络问题,而 Fabedge 解决的是边缘计算场景下,使用 Kubeedge 将边缘节点接入云端 Kubernetes 集群后,不同边缘节点上 POD 之间, 边缘节点 POD 和云端 POD 之间如何通讯的问题。目前 Fabedge 支持无缝集成云端 Calico 插件,以后会扩展到其它插件。
关注“博云”公众号加入FabEdge微信交流群