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网站的历史可以追溯到万维网初期,相比于静态网站,动态网站提供了强大的可交互功能.经过几十年的发展,动态网站在互动 ...
随机推荐
- Web 安全漏洞 All In One
Web 安全漏洞 All In One Web 安全 & 漏洞 输入输出验证不充分 SQL 注入 XSS self-XSS CSRF 目录穿越 文件上传 代码注入 命令注入 信息漏洞 暴力破解 ...
- js Array All In One
js Array All In One array 方法,改变原数组(长度),不改变原数组(长度) https://developer.mozilla.org/en-US/docs/Web/JavaS ...
- web development all in one
web development all in one https://javascript.xgqfrms.xyz/web-development-all-in-one.html refs https ...
- Paint Tool SAI
Paint Tool SAI PC 绘画工具 https://en.wikipedia.org/wiki/Paint_Tool_SAI refs https://www.systemax.jp/en/ ...
- HTML5 QRCode Scaner
HTML5 QRCode Scaner how to scan QR Code using the camera of the phone or website live demo https://c ...
- How to get a DOM element's ::before content with JavaScript?
How to get a DOM element's ::before content with JavaScript? https://stackoverflow.com/questions/443 ...
- vue watch & arrow function bug
vue watch & arrow function bug watch: { GeoJSON: function(newValue, oldValue) { log(`\n\n\nGeoJS ...
- 新年狂欢高倍币,1万枚VAST拿到手软
新一年NGK推出了新币VAST,成为了当前最瞩目的一颗星.有人认为VAST有价无市,有人认为VAST价值巨大,潜力无限.总之,众说风云! 选择数字货币,当然是挑选有价值的货币,从内外价值入手. 一.币 ...
- KDE 桌面不显示背景和状态栏
在arch的一次更新后,kde的桌面背景,插件,状态栏变成了一片黑,如下图所示. 解决办法:删除/home/stone/.config/plasma-org.kde.plasma.desktop-ap ...
- Docker 一次性进程与对话进程
目录 一次性进程 对话进程 退出的方法 参考 Docker在运行程序的时候,需要区分运行的程序是一次性进程还是对话进程,不同的进程操作方式有差异. 一次性进程 一些简单进程是不需要交互的,比如hell ...