KubeEdge边缘自治设计原理
这一篇内容主要是KubeEdge中边缘节点组件EdgeCore的原理介绍。
KubeEdge架构—EdgeCore
上图中深蓝色的都是kubeedg自己实现的组件,亮蓝色是k8s社区原生组件。这篇主要内容是黄色框框的这三个组件。有一个值得注意的是,这些蓝色框的组件其实都是一个模块,都是在一个进程edgecore里的。
Module间通信
这里Process相当于EdgeCore,是一个进程,这个进程里面分为多个Module模块(EdgeHub、MetaManager、EdgeD)。
它们之间是通过一个BeehiveContext进行通信的,首先模块起来之后会在BeehiveContext中进行注册,每个模块会有一个对应的channel,这个channel是根据Modeule name放到一个map里面。加入模块B要给模块A发送消息,它就会根据模块A的名字将要发送的消息塞到对应的channel队列里,模块A一直在监听,有数据时就会去读出来。这就是一个进程里面Module间通信的原理。
ModeuleContext是模块注册相关接口
MessageContext是发送数据相关接口,比如send(module stirng,message model.Message)函数,第一个参数表示要发送给哪个模块,第二个message的类型和之前云边通信的message是同一种,也就是说kubeedge里面所有的通信包括云边协同的通信、进程间各个模块之间的通信,消息的结构都是统一的。
EdgeHub
edgehub是边缘节点用来收发数据的模块,与之相对应的是云端的cloudhub。
上行——通过EdgeHub刷新状态
上行的数据包括:edged管理的node、pod的状态信息,它先报到MetaManager这边,MetaManager在传到EdgeHub,经过edgehub把数据同步到云上。这样就实现了node、pod状态的上报。关于设备的信息这篇内容不纤细展开。
下行——通过EdgeHub下发元数据
这里的MessageDispatcher的作用和云上的有点区别:这个是分发到不同的模块,云上是分发到不同的边缘节点。如果是pod的元数据,就推给metamanager->Edged去拉起相应容器;如果是设备信息,就推给DeviceTwin->EventBus。
MetaManager
MetaManager的作用是在EdgeHub和Edged之间做持久化,它会把原数据先持久化,注意:这里如果持久化失败的话,它会重新存或者发送失败的消息给云端,直到持久化成功后才会把数据传到Edged等相应模块。
EdgeD
EdgeD是裁剪的轻量化kubelet,保留了应用生命周期管理的相关模块,去掉了一些不必要的东西,比如第三方存储这些在边缘暂时不需要的。这里也集成了CNI/CSI/CRI,现在CNI里的东西都放在CRI里面去调用了,所以从代码里面看不到CNI的东西。
MetaClient是EdgeD新加的东西,MetaClient是直接跟MetaManager通信的,原生的kubelet里面KubeClient是跟api-server通信的。这里改了以后呢EdgeD挂掉重启之后拿到的数据是通过MetaClient到MetaManager那边去数据库里去拿,原生的KubeClient会去从ApiServer里面去拿。
边缘自治原理
云边连接断开
第一种情况是 云边连接断开后,边缘业务可稳定运行。原生k8s中断连后,节点上的资源信息会被调度到其他节点。
还有一种情况是云边连接断开后,边缘节点重启。原生k8s中,kubelet拿到的数据是保存在内存中的,如果连接断开,节点重启后,内存缓存的东西就会丢失,服务不可恢复。在KubeEdge中,边缘节点重启后会从本地数据库中拿到相应数据进行服务恢复。
管理边缘的完整集群
目前边缘自治的特性只适合单节点,边缘集群的自治可能会在后续版本中支持,也是目前我想要做的方向。如果边缘资源充足的话可以跑K8s集群,如果不充足的话用KubeEdge支持的EdgeSite。
KubeEdge边缘自治设计原理的更多相关文章
- Atitit ati licenseService 设计原理
Atitit ati licenseService 设计原理 C:\0workspace\AtiPlatf\src_atibrow\com\attilax\license\LicenseX.ja ...
- kafka入门:简介、使用场景、设计原理、主要配置及集群搭建(转)
问题导读: 1.zookeeper在kafka的作用是什么? 2.kafka中几乎不允许对消息进行"随机读写"的原因是什么? 3.kafka集群consumer和producer状 ...
- html5设计原理(转)
转自: http://www.cn-cuckoo.com/2010/10/21/the-design-of-html5-2151.html 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一 ...
- 学习HTML5必读之《HTML5设计原理》
引子:很久前看过的一遍受益匪浅的文章,今天再次转过来,希望对学习HTML5的朋友有所帮助. 今天我想跟大家谈一谈HTML5的设计.主要分两个方面:一方面,当然了,就是HTML5.我可以站在这儿只讲HT ...
- 分布式文件系统FastDFS设计原理
原文地址: http://blog.chinaunix.net/uid-20196318-id-4058561.html FastDFS是一个开源的轻量级分布式文件系统,由跟踪服务器(tracker ...
- ApplicationContext容器的设计原理
1.在ApplicationContext容器中,我们以常用的FileSystemXmlApplicationContext的实现为例来说明ApplicationContext容器的设计原理. 2.在 ...
- BeanFactory容器的设计原理
XmlBeanFactory设计的类继承关系 1.BeanFactory接口提供了使用IoC容器的规范.在这个基础上,Spring还提供了符合这个IoC容器接口的一系列容器的实现供开发人员使用. 2. ...
- Spring技术内幕——深入解析Spring架构与设计原理(一)IOC实现原理
IOC的基础 下面我们从IOC/AOP开始,它们是Spring平台实现的核心部分:虽然,我们一开始大多只是在这个层面上,做一些配置和外部特性的使用工作,但对这两个核心模块工作原理和运作机制的理解,对深 ...
- BigPipe设计原理
高性能页面加载技术--BigPipe设计原理及Java简单实现 1.技术背景 动态web网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动 ...
随机推荐
- js array contains All In One
js array contains All In One includes & contains & has Array.prototype.contains "use st ...
- Linux bash shell All In One
Linux bash shell All In One Linux https://tinylab.gitbooks.io/shellbook/content/zh/chapters/01-chapt ...
- HTML spaces types: &   &  
HTML spaces types: & & What is the difference between and https://stackoverflow.co ...
- Java & Maven & Spring & Spring Boot
Java & Maven & Spring & Spring Boot Spring Boot sb https://start.spring.io/ Spring 4 htt ...
- 线上 S1 故障是什么, 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1
线上 S1 故障是什么 线上 S1 故障, 运维故障分级, 运维, 故障分级, P1 级别故障, 故障, P1 , S1 故障复盘 https://time.geekbang.org/column/a ...
- vue v-io 父子组件双向绑定多个数据
vue-io-directive 可以减少使用emit,组件自带的v-model好像也只能设置一个 安装 npm i vue-io-directive 使用 import Vue from 'vue' ...
- 知名金融媒体采访行业大咖,多方推动BGV茁壮成长
近来,多家知名金融媒体如纽约金融时报.伦敦金融时报等采访NGK官方代表洛索斯夫,以及美国当地行业大咖马库斯等人. 受访的NGK官方代币洛索斯夫回答道,近期官方将会推出NGK的书籍<NGK公链底层 ...
- 鸿蒙开源第三方组件——进度轮ProgressWheel
目录:1.前言2.背景3.组件功能展示4.Sample解析5.Library解析6.作者系列文章合集 前言 基于安卓平台的进度轮组件ProgressWheel(https://github.com/A ...
- 后端程序员之路 6、Python fabric
直接写shell固然也很好,但是用python来写脚本,也是美滋滋.fabric是一个封装部署.多机操作等功能的python库. Welcome to Fabric! - Fabric documen ...
- PAT-1145(Hashing - Average Search Time)哈希表+二次探测解决冲突
Hashing - Average Search Time PAT-1145 需要注意本题的table的容量设置 二次探测,只考虑正增量 这里计算平均查找长度的方法和书本中的不同 #include&l ...