kubeedge源码分析系列之整体架构

208 阅读2分钟

本系列的源码分析是在 commit da92692baa660359bb314d89dfa3a80bffb1d26c 之上进行的。

kubeedge是一个基于kubernetes构建的开放平台,使能边缘计算,将容器化应用编排功能扩展到边缘的节点和设备,并为云和边缘之间的网络,应用部署和元数据同步提供基础架构支持。

本文概述

本文从kubeedge的整体架构切入,首先梳理它包含的组件功能及组件之间的关系,然后分析各组件之间共用的框架和功能,最后分析组件中各模块之间共用的框架和功能。具体如下:

  1. 组件功能及组件之间的关系
  2. 组件的共用框架和功能
  3. 组件中模块的共用框架和功能

组件功能及组件之间的关系

kubeedge中的组件及组件关系,先从官方的架构图说起,具体如下:

kubeedge整体架构图

从官方的架构图可以清晰地看到,kubeedge整体分Cloud和Edge两部分:

  1. Cloud部分 是kubernetes api server与Edge部分的桥梁,负责将kubernetes的指令下发到Edge,同时将Edge的状态和事件同步到的kubernetes api server;
  2. Edge部分 接受并执行Cloud部分下发的指令,管理各种负载,并将Edge部分负载的状态和事件同步到Cloud部分;

除了官方架构图展示的Cloud和Edge部分外,还有横跨Cloud和Edge的部分,具体如下:

  1. Edgemesh 基于Istio的横跨Cloud和Edge的服务网格解决方案;
  2. Edgesite 为满足在边缘需要完整集群功能的场景,定制的在边缘搭建既能管理、编排又能运行负载的完整集群解决方案;

组件的共用框架和功能

在源码层面,kubeedge核心独立组件包括cloudcore、edgecore、edge_mesh和edge_site,除此之外还有mappers和keadm,具体如下下表:

组件名组件功能备注
cloudcoreCloud部分各功能模块的集合
edgecoreEdge部分各功能模块的集合
edge_mesh服务网格解决方案源码目录中缺少makefile文件
edge_site边缘独立集群解决方案
mappers物联网协议实现包本源码分析系列不涉及
keadmkubeedge的一键部署工具目前支持unbuntu,本源码分析系列不涉及

以上组件中的cloudcore、edgecore、edge_mesh和edge_site具有类似的代码结构,具体如下表:

组件名代码目录组件启动入口
cloudcorekubeedge/cloudkubeedge/cloud/cloudcore/cloudcore.go,kubeedge/cloud/admission/admission.go,kubeedge/cloud/csidriver/csidriver.go
edgecorekubeedge/edgekubeedge/edge/cmd/edgecore/edgecore.go
edge_meshkubeedge/edgemeshkubeedge/edgemesh/cmd/edgemesh.go
edge_sitekubeedge/edgesitekubeedge/edgesite/cmd/edgesite.go

在cloudcore、edgecore、edge_mesh和edge_site组件的源码中都使用了命令行框架cobra ,具体如下:

  1. cloudcore代码入口

    kubeedge/cloud/cloudcore/cloudcore.go