本系列的源码分析是在 commit da92692baa660359bb314d89dfa3a80bffb1d26c 之上进行的。
kubeedge是一个基于kubernetes构建的开放平台,使能边缘计算,将容器化应用编排功能扩展到边缘的节点和设备,并为云和边缘之间的网络,应用部署和元数据同步提供基础架构支持。
本文概述
本文从kubeedge的整体架构切入,首先梳理它包含的组件功能及组件之间的关系,然后分析各组件之间共用的框架和功能,最后分析组件中各模块之间共用的框架和功能。具体如下:
- 组件功能及组件之间的关系
- 组件的共用框架和功能
- 组件中模块的共用框架和功能
组件功能及组件之间的关系
kubeedge中的组件及组件关系,先从官方的架构图说起,具体如下:
从官方的架构图可以清晰地看到,kubeedge整体分Cloud和Edge两部分:
- Cloud部分 是kubernetes api server与Edge部分的桥梁,负责将kubernetes的指令下发到Edge,同时将Edge的状态和事件同步到的kubernetes api server;
- Edge部分 接受并执行Cloud部分下发的指令,管理各种负载,并将Edge部分负载的状态和事件同步到Cloud部分;
除了官方架构图展示的Cloud和Edge部分外,还有横跨Cloud和Edge的部分,具体如下:
- Edgemesh 基于Istio的横跨Cloud和Edge的服务网格解决方案;
- Edgesite 为满足在边缘需要完整集群功能的场景,定制的在边缘搭建既能管理、编排又能运行负载的完整集群解决方案;
组件的共用框架和功能
在源码层面,kubeedge核心独立组件包括cloudcore、edgecore、edge_mesh和edge_site,除此之外还有mappers和keadm,具体如下下表:
| 组件名 | 组件功能 | 备注 |
|---|---|---|
| cloudcore | Cloud部分各功能模块的集合 | |
| edgecore | Edge部分各功能模块的集合 | |
| edge_mesh | 服务网格解决方案 | 源码目录中缺少makefile文件 |
| edge_site | 边缘独立集群解决方案 | |
| mappers | 物联网协议实现包 | 本源码分析系列不涉及 |
| keadm | kubeedge的一键部署工具 | 目前支持unbuntu,本源码分析系列不涉及 |
以上组件中的cloudcore、edgecore、edge_mesh和edge_site具有类似的代码结构,具体如下表:
| 组件名 | 代码目录 | 组件启动入口 |
|---|---|---|
| cloudcore | kubeedge/cloud | kubeedge/cloud/cloudcore/cloudcore.go,kubeedge/cloud/admission/admission.go,kubeedge/cloud/csidriver/csidriver.go |
| edgecore | kubeedge/edge | kubeedge/edge/cmd/edgecore/edgecore.go |
| edge_mesh | kubeedge/edgemesh | kubeedge/edgemesh/cmd/edgemesh.go |
| edge_site | kubeedge/edgesite | kubeedge/edgesite/cmd/edgesite.go |
在cloudcore、edgecore、edge_mesh和edge_site组件的源码中都使用了命令行框架cobra ,具体如下:
-
cloudcore代码入口
kubeedge/cloud/cloudcore/cloudcore.go