KubeEdge是一个开源系统,用于将本机容器化的应用程序编排功能扩展到Edge上的主机, 它基于kubernetes构建,并为网络,应用程序提供基本的基础架构支持。云和边缘之间的部署和元数据同步。Kubeedge已获得Apache 2.0的许可。并且完全免费供个人或商业使用。我们欢迎贡献者!
我们的目标是建立一个开放平台,以支持Edge计算,将原生容器化应用程序编排功能扩展到Edge上的主机,该主机基于kubernetes,并为网络, 应用程序部署以及云与Edge之间的元数据同步提供基础架构支持。
kubeedge分为两个可执行程序,cloudcore和edgecore,分别有以下模块
cloudcore:
edgecore:
EdgeD是管理节点生命周期的边缘节点模块。它可以帮助用户在边缘节点上部署容器化的工作负载或应用程序。这些工作负载可以执行任何操作,从简单的遥测数据操作到分析或ML推理等。使用kubectl云端的命令行界面,用户可以发出命令来启动工作负载。
Docker容器运行时当前受容器和镜像管理支持。将来应添加其他运行时支持,例如containerd等。
有许多模块协同工作以实现edged的功能。
Eventbus充当用于发送/接收有关mqtt主题的消息的接口
它支持三种模式:
MetaManager是edged和edgehub之间的消息处理器。它还负责将元数据存储到轻量级数据库(SQLite)或从中检索元数据。
Metamanager根据以下列出的操作接收不同类型的消息:
Edge Hub负责与云中存在的CloudHub组件进行交互。它可以使用Web套接字连接或QUIC协议连接到CloudHub 。它支持同步云端资源更新,报告边缘端主机和设备状态更改等功能。
它充当边缘与云之间的通信链接。它将从云接收的消息转发到边缘的相应模块,反之亦然。
edgehub执行的主要功能是:
DeviceTwin模块负责存储设备状态,处理设备属性,处理设备孪生操作,在边缘设备和边缘节点之间创建成员资格, 将设备状态同步到云以及在边缘和云之间同步设备孪生信息。它还为应用程序提供查询接口。DeviceTwin由四个子模块(即membership,communication,device和device twin)组成,以执行device twin模块的职责。
EdgeController是Kubernetes Api服务器和Edgecore之间的桥梁
CloudHub是cloudcore的一个模块,是Controller和Edge端之间的中介。它同时支持基于Web套接字的连接以及QUIC协议访问。Edgehub可以选择一种协议来访问cloudhub。CloudHub的功能是启用边缘与控制器之间的通信。
通过k8s CRD来描述设备metadata/status ,devicecontroller在云和边缘之间同步,有两个goroutines: upstream controller
/ downstream controller