文档章节

KubeEdge创始人 课后答疑——《KubeEdge架构与核心技术》

KubeEdge
 KubeEdge
发布于 2019/12/28 18:47
字数 1999
阅读 1.3K
收藏 0

「深度学习福利」大神带你进阶工程师,立即查看>>>

2019年11月14日视频直播了KubeEdge系列课程的第一课《KubeEdge架构与核心技术》,课程首先介绍了云原生、边缘计算的发展历程,从持续狂热的Kubernetes到飞速发展的边缘计算。再针对边缘计算网络不稳定、资源有限等条件下,分析了KubeEdge项目如何将云原生生态的众多标准与优势带到边缘计算。包括在K8s的应用编排、调度能力之上,构建的云边协同、边缘自治、应用管理、设备管理等能力。

本次课程的回放地址:

媒体中心​huaweicloud.bugu.mudu.tv

 

课后如下问题讲师进行了详细解答:

Q1 :KubeEdge云和边的数据协同有什么优势?

A1 :K8s的原生架构中, Node (Kubelet) 是通过List-watch机制主动与Master通信。List-watch机制有几个特点:

1.事件传输没有ACK类的校验机制,要依赖数据中心稳定的网络保证不丢事件

2. 每次网络断开,Node侧都会从新执行List操作(取回所有数据),要依赖数据中心稳定的网络保证长连接不频繁断开,否则对Master及网络都是很大的损耗。

在边缘场景下,众所周知网络都是很不稳定的,包括丢失数据、连接断开等。针对不稳定的网络,在KubeEdge云边协同的设计中:

1. 我们把List-watch中的事件取出来,加了ACK校验机制,只有边缘收到数据且回复ACK信息,云端才认为发送成功,反之则进行重试。

2. 在网络断开(确认节点离线)后,云端会将待同步数据持久化,等到边缘节点上线,再将缓存的待发送数据逐一下发,3. 针对未发送的消息实时检查合并去重,避免网络震荡。

KubeEdge的云边协同机制不仅保证了云和边之间数据的可靠传输,也避免了网络不稳定时重新List造成的网络压力。

 

Q2 :KubeEdge目前是如何解决边缘节点自治能力的?

A2 :KubeEdge会边缘将收到的应用、设备元数据都进行本地持久化。相比Kubelet在内存中缓存对象的方式,可以有效保证节点离线、故障恢复时的业务自治和快速自愈。

 

Q3 :边缘节点离线后,依赖数据多次变更,边缘应用和云端数据的最终一致是怎么保证的?

A3 : KubeEdge目前的应用管理等操作都需要通过K8s master进行,针对边缘节点离线场景主要提供自治的能力,既本地持久化的数据仅用于管理节点上的应用和设备,云边通信恢复时,节点将同步云依据来自CloudCore的最新消息更新本地元数据。这里稍有不同的是边缘设备管理,对设备期望状态的设置需要通过Device CRD中的Desired State来操作(从云到边),而设备实际状态的上报会体现在Reported State中(从边到云),两个方向的数据同步不会冲突。

 

Q4 :KubeEdge与K3s的区别是什么?

A4 :首先是架构选型问题,K3s选择的是在边缘运行整个K8s集群的方案,不具备云边协同的能力;其次K3s虽然对K8s做了轻量化,但整体资源要求仍然较高,无法运行在IOT Hub、工业网关等小型设备中。

KubeEdge针对边缘场景的优化包括:

1. 针对边缘网络不稳定的情况,增加了云边数据协同的可靠性传输、边缘元数据持久化,减少了网络不稳定造成的压力震荡,实现了边缘离线自治的能力,在云边断联、节点故障恢复时保证业务不受影响。

2. 针对边缘资源不足的情况,对Kubelet进行轻量化裁剪,支持在256MB的设备上运行。

3. 针对复杂多样的边缘设备管理,KubeEdge定义了一套通用的设备管理API(K8s CRD)以及设备协议解耦层,用户可以方便地使用KubeEdge进行管理各种边缘设备。

 

Q5 :中心K8s对边缘节点的管理主要操作有哪些?

A5 : KubeEdge运行在K8s完整的应用调度、管理能力之上,意味着KubeEdge的云端不负责应用的调度、管理,只是将调度到边缘节点的应用、设备元数据下发到边缘。KubeEdge在云端的核心组件是CloudCore,包含EdgeController、DeviceController、CloudHub三个模块,EdgeController、DeviceController负责将应用、设备元数据下发到边缘,同时将来自边缘的节点状态、应用状态、设备状态刷新到K8s集群中;CloudHub负责直接与边缘通信。

Q6 :新版本边缘节点的service还是仅支持hostPort吗,nodeport是否支持?

A6 :从KubeEdge 1.1版本开始集成了CRI,意味着用户可以使用CNI插件来配置网络,不再限制于hostport。NodePort是K8s中服务访问的概念,需要通过Kube-proxy来配置,目前在边缘端还不支持。另外KubeEdge提供了EdgeMesh实现边缘应用间的互访。

Q7 :边缘节点的Docker容器镜像是从整个云-边k8s系统统一的镜像仓库拉取的吗?

A7 :只要边缘端能够访问到的镜像仓库,都能够用来拉取镜像。

Q8 :PPT里提到"KubeEdge 用于将容器化应用程序编排功能扩展到Edge的主机。" 那么,是把云上的应用下沉到edge、还把终端设备上的应用提升到edge呢?

A8 :KubeEdge作为应用管理平台时,可以在云端统一管控,既可以把应用部署到云端节点,也可以部署到边缘节点。用户可以根据自身需求,将云端的部分业务下沉到边缘。如果需要将终端设备上的应用部署到边缘节点,也可以通过KubeEdge来部署。

Q9 :边缘侧的各个应用是怎么通信的?比如一个做sql过滤的应用和另一个做数据分析的应用是通过hub统一转发的,还是应用间就同步了,亦是通过mqtt等协议?同步异步消息分别怎么实现的?

A9 :目前KubeEdge中使用EdgeMesh机制来做边缘端应用的互访,不需要通过hub与mqtt转发,在EdgeMesh实现应用互通的前提下,同步异步消息依赖用户应用自身的机制。

Q10 :KubeEdge节点和普通节点都在 kubectl get node 中获取到,这两者有什么区别?

A10 :没有本质区别,KubeEdge的边缘组件会将Node通过云边协同通道注册到K8s Master,唯一的不同是普通节点由Kubelet直接访问Master完成节点注册,KubeEdge是通过云边协同通道注册,API都是一致的。

Q11:KubeEdge的 modbus协议是用什么设备调试的?

A11: 目前开发调试中使用modbus slave来调试。

Q12 :KubeEdge的安全层是怎么做的?

A12 :KubeEdge云边协同使用了安全的WebSocket通道。对于应用间的安全互访要依赖用户自己配置安全证书等。

Q13 :KubeEdge边缘节点能管理GPU设备吗?

A13 :边缘节点可以通过DevicePlugin来管理GPU设备。

 

 

项目的地址(欢迎Star、Folk,各种Issue、PR):

图标     kubeedge/kubeedge 

KubeEdge
粉丝 6
博文 13
码字总数 17242
作品 0
深圳
私信 提问
加载中
请先登录后再评论。
我的架构演化笔记 功能1: 基本的用户注册

“咚咚”,一阵急促的敲门声, 我从睡梦中惊醒,我靠,这才几点,谁这么早, 开门一看,原来我的小表弟放暑假了,来南京玩,顺便说跟我后面学习一个网站是怎么做出来的。 于是有了下面的一段...

强子哥哥
2014/05/31
976
3
代码生成器--Codgen

Codgen是一个基于数据库元数据模型,使用freemarker模板引擎来构建输出的代码生成器。freemarker的数据模型结构通常来说都是一个Map树状结构模型,codgen也不例外,它的数据模型这棵树的根节...

黄天政
2013/01/29
1.4W
2
Javascript图元绘制库--ternlight

基于HTML CANVAS API的Javascript库,提供在HTML页面上绘制图元——如流程图的能力。 目前已支持简单的矩形图元和图元间的连线(直线、直角连线两种),拖拽图元等能力。 该javascript librar...

fancimage1
2013/02/07
6.3K
1
实时分析系统--istatd

istatd是IMVU公司工程师开发的一款优秀的实时分析系统,能够有效地收集,存储和搜索各种分析指标,类似cacti,Graphite,Zabbix等系统。实际上,istatd修改了Graphite的存储后端,重新实现了...

匿名
2013/02/07
3.1K
1
OpenDolphin

Open Dolphin 是一个免费开源的库,用来保护您的业务应用程序应对不确定性的可视化技术变化。 Dolphin严格分离业务逻辑和可视化效果,通过可插入式的架构将业务逻辑放在远程服务器端,可自由...

匿名
2013/03/05
670
0

没有更多内容

加载失败,请刷新页面

加载更多

phpstorm 主题颜色

个人比较喜欢 复制文件保存为 red.icls <scheme name="1337" version="142" parent_scheme="Default"> <option name="FONT_SCALE" value="1.0" /> <metaInfo> <property name="c......

chenhongjiang
10分钟前
0
0
Hystrix核心原理和断路器源码解析

Hystrix运行原理 构造一个HystrixCommand或HystrixObservableCommand对象 执行命令。 检查是否已命中缓存,如果命中直接返回。 检查断路器开关是否打开,如果打开,直接熔断,走fallback逻辑...

xiaolyuh
今天
10
0
求职应聘,如何自我分析人格优势?

“你那里有没有合适的工作介绍给我啊?” “我想找份我喜欢的工作,可是好难啊怎么办啊?” “为什么我求职总是不成功呢?” 最近我总是接到朋友询问工作相关的消息,给她们提供招聘信息的同...

蛤蟆丸子
今天
17
0
Pycharm、Idea、Goland 官方汉化来了

作为软件开发的编辑器,不得不提大名鼎鼎的 JetBrains 公司,其出品的软件:Pycharm、Idea、WebStorm、phpstorm、CLion、RubyMine、AppCode、DataGrid,目前来讲都是最受欢迎的! 可是由于软...

猪哥66
今天
18
0
数据分析师必学第一课:构建完整的指标体系

本文分享自微信公众号 - 大数据架构师专家(xinsz08)。 如有侵权,请联系 support@oschina.cn 删除。 本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。...

致码高胜寒
今天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部