KubeEdge源码学习0:架构记录

本文仅为个人的学习笔记(速记),不具任何参考意义。
收集自网络片段及官方视频,但用自己理解的话字出来。

Cloud部分

以旁路方式接入k8s master,不影响原有k8s功能。
负责将k8s的操作指令发送到边缘端。
同时,将边缘端的状态、事件同步到k8s中。
注:k8s只知道资源,不知道真正机器在哪里。

EdgeController

边缘节点管理。应用状态数据云边协同。

DeviceController

接入和管理边缘设备。设备数据云边协同。

SyncController

1.2版本引入,看得不明白,待写。

CSI 驱动

同步存储数据到边缘端,为兼容标准的 CSI 做的适配器。

Admission webhook

校验进入kubeedge

Edge部分

管理边缘端的所有操作。

EdgeHub

与CloudHub通过websocket通信,提供可靠的云边信息同步(可理解为唯一的云边通道)。与云端的cloudhub对等。有:同步云端的资源到边缘端,将边缘的状态上报到云端。

MetaManager

元数据本地持久化。configmap、secret等,通过该组件写到本地存储,sqlite(足够轻量)。
离线自治功能?
MetaManager 模块后端对应一个本地的数据库(sqlLite),所有其他模块需要与 cloud 端通信的内容都会被保存到本地 DB 种一份,当需要查询数据时,如果本地 DB 中存在该数据,就会从本地获取,这样就避免了与 cloud 端之间频繁的网络交互;同时,在网络中断的情况下,本地的缓存的数据也能够保障其稳定运行(比如你的智能汽车进入到没有无线信号的隧道中),在通信恢复之后,重新同步数据。是边缘节点自治能力的关键;

Edged

类似kubelet,实现了pod生命周期管理的功能,但又删除了部分功能。实现 Pod,Volume,Node 等 Kubernetes 资源对象的生命周期管理。可接入docker、containerd、cri-o。

DeviceTwin

将设备管理数据(开头、状态)持久化存储,同时同步设备信息到云端。(是设备孪生概念,所以起名为devicetwin)

EventBus

实际为mqtt客户端,为其他组件提供发布和订阅功能

ServiceBus

实际是http客户端。vis类似EventBus,只通信协议不同。

Edgemesh

基于Istio的横跨Cloud和Edge的服务网格解决方案;

EdgeController

管理边缘节点。它是一个扩展的 Kubernetes 控制器,管理边缘节点和 pod 元数据,以便数据可以面向特定的边缘节点

Edgesite

为满足在边缘需要完整集群功能的场景,定制的在边缘搭建既能管理、编排又能运行负载的完整集群解决方案;

mappers

物联网协议实现包。
设备信息管理模块主要通过MQTT协议与接入到边缘端的设备交互。
支持的协议:MQTT、BlueTooth、OPC UA、Modbus。

模块、名称及所属组

1
2
3
4
5
6
7
8
9
Module	Name	Group
DeviceTwin twin twin
edged edged edged
EdgeHub websocket hub
eventbus eventbus bus
edgemesh edgemesh mesh
metaManager metaManager meta
servicebus servicebus bus
test testManager meta