KubeEdge:如何在云端点亮您家的灯 的相关思考

2024-01-07 08:20

本文主要是介绍KubeEdge:如何在云端点亮您家的灯 的相关思考,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

KubeEdge:如何在云端点亮您家的灯

的相关思考 
  • 边缘计算与KubeEdge

云计算离终端设备(如摄像头、传感器等)较远,对于实时性要求高的计算需求,把计算放在云上会引起较长的网络延时、网络拥塞、服务质量下降等问题。而终端设备通常计算能力不足,无法与云端相比。在此情况下,边缘计算应运而生,将云端计算能力延伸到靠近终端设备的边缘节点,完美解决上述问题。

KubeEdge作为全球首个Kubernetes原生的开源边缘计算平台,依托Kubernetes的容器编排和调度能力,通过纳管用户的边缘节点,提供将云上应用延伸到边缘的能力,联动边缘侧和云端的数据,满足客户对边缘计算资源的远程管控、数据处理、分析决策、智能化的诉求。同时,在云端提供统一的设备/应用监控、日志采集等运维能力,为企业提供完整的边云协同一体化服务的边缘计算解决方案。

  • 设备孪生与kubeEdge设备管理

设备孪生Device twin,作为一种IoT设备元数据在应用平台上的映射,已经成为IoT设备管理的重要组成。
这大概解决我对云端如何管理边缘设备的困扰。

IoT设备元数据分为静态属性(序列号、资产标示符、mac地址等)和动态属性(特定背景下的实时数据)动态属性也成为Twin属性。

设备孪生和物理设备具有相同的特性,便于设备与应用之间进行更好的通信。

思考,设备孪生是位于云端,k8s管理设备孪生的状态,而设备孪生真正控制物理设备,这其实相当加了一层虚拟,好似软件定义的设备。

设备孪生维护这期望值和实际值,期望值是远端下达的命令结果,实际值是从物理设备更新到的数据,设备孪生像物理设备发送控制命令,使两个状态最终一致。
在这里插入图片描述

从这张图,可以看到设备孪生的两个状态属性,以及和物理设备之间的关系。IoT设备实时反馈自己的actual state到其孪生设备上,孪生设备根据其期望值向IoT设备发送期望状态,IoT收到Expected State后,更新自己的状态。

有个疑问,将IoT设备纳入云端管理的意义是什么?
原来认为IoT设备就是被一个远程服务器在处理控制的,比较像一个单一的服务器,现在看起来通过容器云管理,粒度细了,各服务进程相对对立,资源隔离。有点感觉像从虚拟机到容器的状态。

这样看来,容器中实际运行的应该IoT的设备孪生,及是它的远程服务,用户端app是和设备孪生通信,设备孪生和IoT设备交换数据。
设备孪生就是从原来复杂的后台服务编程器了独立服务进程。如下图,描述kubeEdge的一个架构及数据流通状态。

  • KubeEdge设备管理组件

在这里插入图片描述
相比k8s,kubeEdge变成了专用系统,增加了
EdgeController:管理云端及云端与边缘册设备的同步;
Cloudhub:web socket服务端,负责监听云端资源变化,缓存消息到EdgerHub;
EdgeHub:websocket客户端,包括同步云端资源更新,报告边缘节点和设备信息到云端等;
DeviceTwin:负责存储设备状态并同步到云端。
EventBus: 与MQTT服务器Mosquitto交互的客户端,为其他组件提供订阅和发布消息的功能。
Mapper(sdk/app):用于连接和控制端侧设备,例如开、关灯。

在这里插入图片描述
KubeEdge通过CRD(Customer Resource Definition)扩展Kubernetes的API,扩展的API资源包括:Device和DeviceModel等,这样我们能在云端通过Kubernetes命令行工具Kubectl或其他方式对设备资源进行CRUD的操作。Device资源映射与各个边缘节点关联的设备,例如传感器。DeviceModel则是对一类设备定义的模板,方便用户可以在云端依据DeviceModel模板轻易地完成对Device资源的批量操作。

CRD是k8s的一个功能,实现自定义资源到k8s api中,所以这样来说kubeEdge其实是对k8s的一个高层次的应用。

  • 如何点亮家里的灯

hw举了一个例子,下图是设备孪生的属性状态,主要是两个属性,即实际状态和期望状态。下图就像k8s资源对象的配置文件。
在这里插入图片描述

开关灯流程,见下图。

图中分成了两个层次,一个云端一个边缘,这就跟上边所理解的设备孪生放在docker里作为独立的服务处理请求,应该是层次的划分,就像master和node节点的划分,下边一段话引用自kubeEdge的github的readme,注意edge node,应该印证了上边的思路。

Note: Currently, for edge node, we must use hostPort in the Pod container spec so that the pod comes up normally, or the pod will be always in ContainerCreating status. The hostPort must be equal to containerPort and can not be 0.

先看下,怎么开关电灯的。
在这里插入图片描述

首先我们看看如何上报灯的powerstatus的actual值到云端:

  1. Mapper实时上报实际状态Actual State给MQTT服务器Mosquitto。
  2. EventBus从Mosquitto收到订阅消息,消息内容包含设备的实际状态Actual State。
  3. EventBus把设备实际状态Actual State发送给Device Twin。
  4. Device Twin更新设备实际状态Actual State到边缘节点本地的轻量级数据库,例如SQLite。
  5. Device Twin同步实际状态Actual State给WebSocket客户端EdgeHub。
  6. EdgeHub发送消息给WebSocket服务端CloudHub。
  7. CloudHub回馈消息给DeviceController。
  8. DeviceController同步实际状态Actual State到Kubernetes API Server。

最后用户就能在云端查询设备的powerstatus的actual值,获取到边缘侧设备上的灯开、关的实际状态。
在这里插入图片描述

这里为自己强调一下,mapper,即sdk/app,其实是物理设备,由于edge node上运行的是设备孪生,所以用户app应该不是直接访问/控制数据的,而应从专门的服务(该服务可能也部署在k8s上,甚者和设备孪生在同一个物理node上)上获得处理,并更新到设备孪生上。

云端控制,主要是服务处理吧,像丰巢、贩卖机、路灯等等需要商业维护的物联网,而不像是自己一直带入的智能家居类的IoT。

k8s为自己带来了一个新的容器云世界,kubeEdge又带来了一个不一样的IoT云端管理的思路。

  • 参考
  1. 文章来自 华为容器魔方 KubeEdge:如何在云端点亮您家的灯
  2. kubeEdge项目

这篇关于KubeEdge:如何在云端点亮您家的灯 的相关思考的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/579316

相关文章

sqlite3 相关知识

WAL 模式 VS 回滚模式 特性WAL 模式回滚模式(Rollback Journal)定义使用写前日志来记录变更。使用回滚日志来记录事务的所有修改。特点更高的并发性和性能;支持多读者和单写者。支持安全的事务回滚,但并发性较低。性能写入性能更好,尤其是读多写少的场景。写操作会造成较大的性能开销,尤其是在事务开始时。写入流程数据首先写入 WAL 文件,然后才从 WAL 刷新到主数据库。数据在开始

【编程底层思考】垃圾收集机制,GC算法,垃圾收集器类型概述

Java的垃圾收集(Garbage Collection,GC)机制是Java语言的一大特色,它负责自动管理内存的回收,释放不再使用的对象所占用的内存。以下是对Java垃圾收集机制的详细介绍: 一、垃圾收集机制概述: 对象存活判断:垃圾收集器定期检查堆内存中的对象,判断哪些对象是“垃圾”,即不再被任何引用链直接或间接引用的对象。内存回收:将判断为垃圾的对象占用的内存进行回收,以便重新使用。

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

Node Linux相关安装

下载经编译好的文件cd /optwget https://nodejs.org/dist/v10.15.3/node-v10.15.3-linux-x64.tar.gztar -xvf node-v10.15.3-linux-x64.tar.gzln -s /opt/node-v10.15.3-linux-x64/bin/npm /usr/local/bin/ln -s /opt/nod

git ssh key相关

step1、进入.ssh文件夹   (windows下 下载git客户端)   cd ~/.ssh(windows mkdir ~/.ssh) step2、配置name和email git config --global user.name "你的名称"git config --global user.email "你的邮箱" step3、生成key ssh-keygen

zookeeper相关面试题

zk的数据同步原理?zk的集群会出现脑裂的问题吗?zk的watch机制实现原理?zk是如何保证一致性的?zk的快速选举leader原理?zk的典型应用场景zk中一个客户端修改了数据之后,其他客户端能够马上获取到最新的数据吗?zk对事物的支持? 1. zk的数据同步原理? zk的数据同步过程中,通过以下三个参数来选择对应的数据同步方式 peerLastZxid:Learner服务器(Follo

rtmp流媒体编程相关整理2013(crtmpserver,rtmpdump,x264,faac)

转自:http://blog.163.com/zhujiatc@126/blog/static/1834638201392335213119/ 相关资料在线版(不定时更新,其实也不会很多,也许一两个月也不会改) http://www.zhujiatc.esy.es/crtmpserver/index.htm 去年在这进行rtmp相关整理,其实内容早有了,只是整理一下看着方

枚举相关知识点

1.是用户定义的数据类型,为一组相关的常量赋予有意义的名字。 2.enum常量本身带有类型信息,即Weekday.SUN类型是Weekday,编译器会自动检查出类型错误,在编译期间可检查错误。 3.enum定义的枚举类有什么特点。         a.定义的enum类型总是继承自java.lang.Enum,且不能被继承,因为enum被编译器编译为final修饰的类。         b.只能定义

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学