KubeEdge temperature 部署
本文对官方示例 temperature 进行实验。
功能说明
本示例主要是演示在云端获取边缘端的设备状态。
编译
本文对官方示例进行了修改。此处给出修改描述,详情参考修改后的源码。
1、参考 led 示例,新加 Makefile,修改 Dockerfile。
2、修改源码,去掉与硬件操作相关的函数,将采集的温度值 temperature 累加以观察其变化。
3、制作镜像,提交镜像。
3、修改 crds 和 deployment.yaml 文件,指定调度节点名称。
实验
部署:
kubectl apply -f crds/
kubectl apply -f deployment.yaml
查看pod:
# kubectl get pod
NAME READY STATUS RESTARTS AGE
temperature-mapper-77fb74f5-vzztl 1/1 Running 0 5m10s
在边缘商查看日志:
# docker logs ecc3ba6a29dc
2020-03-22T09:11:51.777 [ main] INFO Sensor = DHT11: Temperature = 74*C, Humidity = 85% (retried 1 times)
2020-03-22T09:11:56.778 [ main] INFO Sensor = DHT11: Temperature = 75*C, Humidity = 85% (retried 1 times)
2020-03-22T09:12:01.778 [ main] INFO Sensor = DHT11: Temperature = 76*C, Humidity = 85% (retried 1 times)
在云端观察:
kubectl get device temperature1 -oyaml -w输出示例:
apiVersion: devices.kubeedge.io/v1alpha1
kind: Device
metadata:annotations:kubectl.kubernetes.io/last-applied-configuration: |{"apiVersion":"devices.kubeedge.io/v1alpha1","kind":"Device","metadata":{"annotations":{},"labels":{"description":"temperature","manufacturer":"test"},"name":"temperature1","namespace":"default"},"spec":{"deviceModelRef":{"name":"temperature-model"},"nodeSelector":{"nodeSelectorTerms":[{"matchExpressions":[{"key":"","operator":"In","values":["latelee1"]}]}]}},"status":{"twins":[{"desired":{"metadata":{"type":"string"},"value":""},"propertyName":"temperature-status"}]}}creationTimestamp: "2020-03-22T09:04:18Z"generation: 77labels:description: temperaturemanufacturer: testname: temperature1namespace: defaultresourceVersion: "29280"selfLink: /apis/devices.kubeedge.io/v1alpha1/namespaces/default/devices/temperature1uid: e9869339-6d9b-4bf3-bf9f-c6191efeedc7
spec:deviceModelRef:name: temperature-modelnodeSelector:nodeSelectorTerms:- matchExpressions:- key: ""operator: Invalues:- latelee1
status:twins:- desired:metadata:type: stringvalue: ""propertyName: temperature-statusreported:metadata:timestamp: "1584868316781"type: stringvalue: 75C // !!!! 此值会变化
源码研究
流程:
1、连接 mqtt:connectToMqtt,故需要边缘端开启 mqtt 服务,并监听 1883 端口。
2、采集温度:ReadDHTxxWithContextAndRetry,本例注释。
3、将温度值发布到mqtt:publishToMqtt。
4、之后进入 KubeEdge 系统,在云端可查看状态。
其它说明:
发布主题指定如下
deviceTwinUpdate := "$hw/events/device/" + "temperature" + "/twin/update"
temperature 为设备名称。需要与 Device 中的 metadata.name 保持一致。此名称也是 kubectl get device
查看到的名称。可修改使其不一致,观察效果。
发布消息前先创建消息体:createActualUpdateMessage,结构体为 DeviceTwinUpdate,具体如下:
map[string]*MsgTwin{"temperature-status": {Actual: &TwinValue{Value: &actualValue}, Metadata: &TypeMetadata{Type: "Updated"}}}
查看device.yaml:
status:twins:- propertyName: temperature-statusdesired:metadata:type: stringvalue: ''
目前看,部分对应起来,深层理论待研究。
KubeEdge temperature 部署相关推荐
- KubeEdge led部署
本文对 KubeEdge 的 led 灯示例进行测试. KubeEdge 官方示例文件仓库为 https://github.com/kubeedge/examples ,将其下载到$GOPATH/sr ...
- K8S 1.18.0 以及KubeEdge 1.10.3 三机安装部署(含过程记录及遇到的报错和解决方法)
因为网络上大多数教程只有部署相关的命令,而无输入命令后正确界面的显示样例,因此在参考网络上教程并跟随实现的过程中,我将过程进行截图记录,供大家参考.希望对大家有帮助~ 一. K8S部署 选用了三台虚拟 ...
- 云原生视频时代已开启,华为云准备好了
视频服务未来是否会像IaaS一样,变成全行业的基础服务? 所有的视频类服务,是否可以通过一张网络来承载,让应用开发效率更高,成本更低,体验更好? #视频盛宴舞台,帷幕已拉开 2020年初,全球范围的 ...
- 详析 Kubernetes 在边缘计算领域的发展
作者 | 张杰 来源 | 分布式实验室 现在开源边缘计算正在经历其业界最具活力的发展阶段.如此多的开源平台,如此多的整合以及如此多的标准化举措!这显示了构建更好平台的强大动力,以便将云计算带到边缘以满 ...
- 面向隐私计算的联邦学习激励机制与效率优化研究
大致是了解了申请项目的全过程,写一份好的申请书,选择合适的课题真的十分重要 科研项目进展 希望能拿到国家级项目 – 好消息是拿国家级了--坏消息是EI即以上一篇论文+专利,未来有学弟看到这篇文章,申请 ...
- Temperature demo 测试部署 by kubeedge
Temperature demo 测试 本实例主要是部署了 基于树莓派的temperatrue 温度测量(由于树莓派不具备温度测量模块,故采用了自然累加的方式来产生温度变化) 一. 准备工作 1)准备 ...
- 从架构设计理念到集群部署,全面认识KubeEdge
摘要:本篇文章将从KubeEdge架构设计理念.KubeEdge代码目录概览.KubeEdge集群部署三方面带大家认识KubeEdge. KubeEdge即Kube+Edge,顾名思义就是依托K8s的 ...
- KubeEdge 1.3.0 部署
本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.3.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...
- KubeEdge 1.2.0 部署
本文介绍了如何在两台 ubuntu 16.04 64 bit 双核 CPU 虚拟机上从源码开始部署 KubeEdge 1.2.0 集群的过程,云端 Kubernetes 版本为 1.17.3,Gola ...
最新文章
- tensorflow 学习笔记-- tf.reduce_max、tf.sequence_mask
- Java编程的逻辑 (62) - 神奇的序列化
- int * * a[10] int * (*a)[10]和 int(*a[10])() 是什么意思
- python 字符串转换成整数
- 同学,你有一份来自支付宝AI学姐的面试锦囊待查收
- How to resolve Unable to load groups error message
- Python-多进程
- java异常日志不要只打一半,要输出全部错误信息
- MTK驱动(46)---- Android CPU频率设置(MTK平台)
- Facebook开发地面技术扩大互联网连接
- python read函数参数_最新Pandas.read_excel()全参数详解(案例实操,如何利用python导入excel)...
- pyqt一个text实时显示另一个text的内容_python:基于tkinter打造的股票实时监控声音报警器! 自动监控,声音警报...
- HDU5234 Happy birthday
- 创业公司专题数据(包含stata多种模型代码)
- matplotlib画三维图
- 智能驾驶+多元化长尾应用场景,什么样的公司最终胜出?
- Elastix 显示座席的状态
- 返回状态码304 Not Modified详解
- 极坐标t1t2几何意义_复数与几何(一) 基本几何性质及应用
- java计算机毕业设计基于springboo+vue的人事管理系统
热门文章
- list lt map gt java_利用Set 对Listlt;Maplt;String,Objectgt;gt; 中的map对象中某一个属性去重...
- python做的数据图表怎么在flask中显示_Python:如何在Flask应用程序的表中显示MySQL查询的数据...
- 微博月活跃用户数增至5.73亿 移动端用户占比达94%
- 美国五家科技巨头十年并购616家小型公司,引发并购审查
- 蓝色起源8月25日进行无人飞行,携带实验设备等上天
- 美团回应无法使用微信支付:耽误大家干饭了,对不起
- Soul回应赴美上市传闻:不是约会软件 没有确定的上市计划
- 电动汽车冬季悲歌:我不是在充电,就是在充电的路上
- 马斯克称自己可能染上中度新冠肺炎
- 最便宜的865旗舰来了!全球首款5G游戏手机发布