
KubeEdge 云边协同架构全景从 CloudCore 到 EdgeCore 的核心组件与运行机制【免费下载链接】kubeedgeKubernetes Native Edge Computing Framework (project under CNCF)项目地址: https://gitcode.com/GitHub_Trending/ku/kubeedgeKubeEdge 是构建于 Kubernetes 之上的云边协同计算框架已晋升为 CNCF 毕业Graduation级项目。本篇基于仓库根目录 README 及其配套的 cloud/README.md、edge/README.md深入解析 KubeEdge 云侧与边侧的核心组件构成、Beehive 模块框架的源码级实现以及 Kubernetes 版本兼容性矩阵帮助读者在动手部署前建立对 KubeEdge 整体架构的准确心智模型。一、定位与核心价值把 Kubernetes 编排延伸到边缘KubeEdge 构建在 Kubernetes 之上将原生的容器化应用编排与设备管理device management能力扩展到边缘侧主机。整体由**云侧cloud part与边侧edge part**两部分组成为云边之间的网络、应用部署和元数据同步提供核心基础设施支撑同时通过MQTT协议让边缘设备经由边缘节点接入系统。其带来的工程收益可以直接从 README 的表述中得到印证现有的机器学习、图像识别、事件处理等复杂应用可以被便捷地部署到边缘侧业务逻辑在边缘运行后更大规模的数据可以在数据产生的本地被安全地处理数据在边缘处理后响应速度显著提升同时数据隐私得到保护。README 归纳的五大核心优势如下优势说明Kubernetes 原生支持在云端使用与 Kubernetes 完全兼容的 API 管理边缘应用与边缘设备云边可靠协同在云边网络不稳定的环境下保证消息无丢失的可靠投递边缘自治当云边网络不稳定、边缘离线且重启后边缘节点仍能自主运行边缘应用正常工作边缘设备管理通过 CRD 实现的 Kubernetes 原生 API 管理边缘设备极轻量边缘 Agent极轻量的 Edge AgentEdgeCore可以运行在资源受限的边缘设备上KubeEdge 是 CNCF 的毕业级托管项目CNCF Graduated Project采用 Apache 2.0 许可证详见 LICENSE。二、总体架构云侧与边侧的组件划分KubeEdge 由云侧In the Cloud与边侧On the Edge两部分构成两部分分别由cloudcore与edgecore两个可执行程序承载。下面按照 README 的官方架构描述逐一拆解并落到仓库源码中的实际位置。2.1 云侧组件In the Cloud云侧由 cloud/README.md 概括为两大核心组件——EdgeController 与 CloudHub。README 正文进一步列出了三个核心控制器CloudHub一个 WebSocket 服务端负责监视云侧资源变化缓存消息并将其发送给 EdgeHubEdgeController一个扩展的 Kubernetes 控制器管理边缘节点与 Pod 的元数据使得数据能够被定向投递到特定的边缘节点DeviceController一个扩展的 Kubernetes 控制器管理设备使得设备元数据/状态数据可以在云边之间同步。cloud/README.md 中还解释了 EdgeController 的工作机制价值它监视 APIServer 上节点与 Pod 的变化将 Pod/Node 绑定信息转换为node -- pods的形式这样边缘节点就能只获取定向给自己的 Pod提升了效率并降低了云边之间的网络带宽开销。源码印证cloudcore 实际注册了哪些模块云侧入口命令定义在 cloud/cmd/cloudcore/app/server.go。NewCloudCoreCommand的Long描述与 README 的组件说明一致而registerModules函数展示了当前 master 分支 cloudcore 实际注册的全部 Beehive 模块// registerModules register all the modules started in cloudcore func registerModules(c *v1alpha1.CloudCoreConfig) { cloudhub.Register(c.Modules.CloudHub) edgecontroller.Register(c.Modules.EdgeController) devicecontroller.Register(c.Modules.DeviceController) taskmanager.Register(c.Modules.TaskManager) synccontroller.Register(c.Modules.SyncController) cloudstream.Register(c.Modules.CloudStream, c.CommonConfig) router.Register(c.Modules.Router) dynamiccontroller.Register(c.Modules.DynamicController, enableAuthorization) policycontroller.Register(client.CrdConfig) }可见除了 README 重点介绍的 CloudHub、EdgeController、DeviceController 三大件之外当前版本的 cloudcore 还集成了 taskmanager、synccontroller、cloudstream边缘流式隧道、router消息路由、dynamiccontroller离线动态控制器与 policycontroller。各模块的源码分别位于 cloud/pkg/cloudhub、cloud/pkg/edgecontroller、cloud/pkg/devicecontroller、cloud/pkg/cloudstream 等目录下与 cloud/README.md 的组件说明一一对应。此外server.go中还有一个值得注意的细节当启用RequireAuthorization特性门控feature gate时cloudcore 会启动 CSRApprover 控制器自动审批边缘节点证书签名请求CSR支撑边缘节点的安全接入相关实现在 cloud/pkg/csrapprovercontroller。2.2 边侧组件On the EdgeREADME 列出的六个核心边侧组件为EdgeHubWebSocket 客户端负责与云服务交互对应架构中的 Edge Controller 一侧。包括将云侧资源更新同步到边缘以及把边缘侧主机与设备的状态变化上报到云端Edged运行在边缘节点上的 agent负责管理容器化应用可以理解为边缘侧的 kubelet 角色EventBusMQTT 客户端与 MQTT 服务器如 mosquitto交互为其他组件提供发布/订阅能力ServiceBusHTTP 客户端与 HTTP 服务器REST交互让云端组件可以访问运行在边缘的 HTTP 服务DeviceTwin负责存储设备状态并同步到云端同时为应用提供查询接口MetaManageredged 与 edgehub 之间的消息处理器同时负责将元数据存取到一个轻量级数据库SQLite中。edge/README.md 对上述六组件的描述与 README 完全一致是理解边侧架构的另一份权威材料。源码印证edgecore 的模块注册与启动流程边侧入口在 edge/cmd/edgecore/app/server.go。其registerModules展示了当前版本 edgecore 注册的完整模块集合// registerModules register all the modules started in edgecore func registerModules(c *v1alpha2.EdgeCoreConfig) { dao.Init( c.DataBase.DataSource, c.Modules.DeviceTwin, c.Modules.EventBus, c.Modules.MetaManager, c.Modules.ServiceBus, ) // register all modules devicetwin.Register(c.Modules.DeviceTwin, c.Modules.Edged.HostnameOverride) edged.Register(c.Modules.Edged) edgehub.Register(c.Modules.EdgeHub, c.Modules.Edged.HostnameOverride) eventbus.Register(c.Modules.EventBus, c.Modules.Edged.HostnameOverride) metamanager.Register(c.Modules.MetaManager) servicebus.Register(c.Modules.ServiceBus) edgestream.Register(c.Modules.EdgeStream, c.Modules.Edged.HostnameOverride, c.Modules.Edged.NodeIP) taskmanager.Register(c.Modules.TaskManager) test.Register(c.Modules.DBTest) }相比 README 列举的六大件源码中还包含edgestream边缘流式通道承载 exec/logs/attach 等隧道与taskmanager等模块。值得注意的是dao.Init这一步DeviceTwin、EventBus、MetaManager、ServiceBus 共享同一个 SQLite 数据源初始化入口印证了 README 中MetaManager 将元数据存入轻量级数据库SQLite的说法——整个边侧的本地持久化都建立在这一个轻量数据库之上这也是 EdgeCore 能够保持极轻量的关键。server.go中还有两个体现边缘自治设计的细节环境检查environmentCheck会扫描进程列表若发现kubelet正在运行则直接报错退出——kubelet should not be running on edge node when starting edgecore。这从代码层面保证了边侧由 edged 统一接管容器运行时避免两套节点代理冲突Bootstrap Token 清理edgecore 首次接入时若配置了 token会在证书申请成功后自动从配置文件清理 tokencleanupToken体现接入凭证的临时性设计。EdgeHub 的实现细节EdgeHub 的实现位于 edge/pkg/edgehub/edgehub.go。从其结构体定义可以看到它内置了证书管理器certificate.CertManager、云边通道客户端clients.Adapter、重连通道与速率限制器flowcontrol.RateLimiter// EdgeHub defines edgehub object structure type EdgeHub struct { certManager certificate.CertManager chClient clients.Adapter reconnectChan chan struct{} rateLimiter flowcontrol.RateLimiter keeperLock sync.RWMutex enable bool }从源码结构看EdgeHub 通过reconnectChan与速率限制配合实现断线重连的退避控制这正是 README 所说云边可靠协同在边侧的落地形态之一。证书相关能力位于 edge/pkg/edgehub/certificate支撑边缘节点与云端之间的双向认证。三、Beehive 模块框架云边组件的统一运行骨架从上面两处registerModules调用可以看出KubeEdge 的云边组件并非各自为战的进程而是统一运行在一个名为Beehive的模块管理框架中源码位于 staging/src/github.com/kubeedge/beehive。Beehive 的核心是一个Module接口见 beehive/pkg/core/module.go每个模块提供Name()、Group()、Enable()、Start()与RestartPolicy()等方法。框架内置了模块级重启策略const ( // RestartPolicyAlways always restart RestartTypeAlways RestartType Always // RestartPolicyOnFailure on failure restart RestartTypeOnFailure RestartType OnFailure )重启策略支持配置重启次数上限、重启间隔IntervalSecond、间隔增长率IntervalTimeGrowthRate与最大间隔RestartIntervalLimit默认 30 秒。从源码结构看当某个模块因未捕获异常退出时Beehive 会按照间隔指数增长、上限 30 秒的策略不断拉起该模块而不影响同进程中的其他模块——这与 pkg/features/features.go 中定义的ModuleRestart特性门控alpha 阶段默认关闭相呼应是 KubeEdge 提升边侧组件鲁棒性Edge Autonomy 优势项的机制基础之一。同样的 feature gate 文件还定义了RequireAuthorization边缘侧应用访问授权与DisableNodeTaskV1alpha2等开关说明 KubeEdge 的新特性普遍通过featureGates配置项灰度启用。四、Kubernetes 兼容性矩阵README 给出了当前 KubeEdge 版本与 Kubernetes 版本的兼容性对照表以仓库 README 为准适用于对应 KubeEdge 版本发布时的组件组合Kubernetes 1.27Kubernetes 1.28Kubernetes 1.29Kubernetes 1.30Kubernetes 1.31Kubernetes 1.32KubeEdge 1.19✓✓✓---KubeEdge 1.20✓✓✓--KubeEdge 1.21✓✓✓--KubeEdge 1.22✓✓✓-KubeEdge 1.23✓✓✓KubeEdge HEAD (master)✓✓✓图例说明✓KubeEdge 与该 Kubernetes 版本完全兼容KubeEdge 存在该 Kubernetes 版本中可能不具备的特性或 API 对象-该 Kubernetes 版本存在 KubeEdge 无法使用的特性或 API 对象。选型建议从表中可以读出清晰的演进规律——较新的 KubeEdge 版本总是对齐较新的 Kubernetes 版本1.23/master 对齐 1.30~1.32而与较旧 Kubernetes 版本组合时带有标记。生产环境部署时应按此矩阵匹配 KubeEdge 版本与 K8s 集群版本避免在-组合下运行。五、部署形态Helm Chart 与关键端口KubeEdge 云侧组件的部署产物位于 manifests/charts/cloudcore 目录。从 Chart 模板manifests/charts/cloudcore/templates可以确认云侧部署包含以下工作负载deployment_cloudcore.yamlcloudcore 主进程内含 cloudhub、edgecontroller、devicecontroller 等模块deployment_controllermanager.yamlcontrollermanageredgeapplication、nodegroup、nodetask 等控制器源码在 cloud/pkg/controllermanager;deployment_admission.yamladmission 准入控制器对应 cloud/cmd/admissiondaemonset_iptablesmanager.yamliptables 管理器对应 cloud/cmd/iptablesmanager 与 cloud/pkg/cloudstream/iptablesdaemonset_mosquitto.yamlmosquitto MQTT 服务器。values.yaml中定义了 admission/cloudcore/controllermanager 等组件的镜像与端口如 10000、10001 的 HTTP 服务端口。一个典型的默认端口可参考 common/constants/default.go// ServerPort is the default port for the edgecore server on each host machine. ServerPort 10350此外cloudcore启动时会执行一次隧道端口协商NegotiateTunnelPort见 cloud/cmd/cloudcore/app/server.go多实例 cloudcore 之间通过kubeedge-system命名空间下的 ConfigMap 记录 IP 与端口的占用情况按ServerPort顺序递增分配空闲端口从而支持 cloudcore 多副本部署下的隧道流量转发。六、仓库结构速览与延伸阅读结合本次分析仓库中与本文主题直接相关的入口路径如下路径内容README.md项目总览、五大优势、组件说明、兼容性矩阵本文主体来源cloud/README.md云侧组件说明edge/README.md边侧六大组件说明cloud/cmd/cloudcore/app/server.gocloudcore 启动入口与模块注册edge/cmd/edgecore/app/server.goedgecore 启动入口、模块注册与环境检查staging/src/github.com/kubeedge/beehiveBeehive 模块框架模块接口与重启策略manifests/charts/cloudcore云侧 Helm Chart 部署产物CONTRIBUTING.md贡献流程CHANGELOG.md 及 CHANGELOG/ 目录各版本变更记录1.0 至 1.23关于进一步学习、社区会议TSC 双周会、社区周会与联系渠道邮件列表、SlackREADME 均给出了指向 KubeEdge 官方站点kubeedge.io与 CNCF 社区的指引安全方面KubeEdge 于 2022 年 7 月完成了第三方安全审计漏洞报告渠道为安全团队邮箱cncf-kubeedge-securitylists.cncf.io详细安全流程遵循 CNCF 社区安全策略。七、小结KubeEdge 的架构可以概括为云侧 cloudcore 以 CloudHub 为消息中枢配合 EdgeController/DeviceController 等扩展控制器完成云边定向数据分发与设备管理边侧 edgecore 以 EdgeHub 为云边通道客户端驱动 Edged、EventBus、ServiceBus、DeviceTwin、MetaManager 等模块并以 SQLite 作为轻量本地存储实现边缘自治。两侧组件统一运行在 Beehive 模块框架之上具备模块级重启与特性门控能力版本选型则以 README 的 Kubernetes 兼容性矩阵为准。理解上述骨架后再结合 cloud/README.md 与 edge/README.md 深入各组件源码即可完整掌握 KubeEdge 的云边协同机制。【免费下载链接】kubeedgeKubernetes Native Edge Computing Framework (project under CNCF)项目地址: https://gitcode.com/GitHub_Trending/ku/kubeedge创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考