本文是基于github上提供的kubeedge-temperature-demo进行的。 由于没有硬件设备,所以本示例中注释了硬件相关的代码,并通过随机生成数字的方式来实现temperature的变化。
1、准备工作
1)kubeedge v1.2.0版本安装成功,并正常运行。 2)本文接下来的验证将使用边缘节点bluejoy-jing进行(如果你参考本文进行相关验证,后续边缘节点名称的配置需要根据你的实际情况进行更改)。 3)从github上clone示例代码
mkdir /home/bluejoy/kubeedge/kubeedge-example/
git clone https://github.com/kubeedge/examples.git
2、temperature-mapper代码的修改
修改temperature-mapper/main.go中的代码,主要修改以下三部分: 1)注释硬件相关的代码 2)增加温度生成的代码(通过随机函数生成) 3)配置MQTT服务器的地址 具体修改部分如下图所示:
3、创建device model和device
3.1 创建device model
cd /home/bluejoy/kubeedge/kubeedge-example/examples/kubeedge-temperature-demo/crds
kubectl apply -f devicemodel.yaml
3.2 修改device.yaml文件的边缘节点名称
vim device.yaml
apiVersion
: devices
.kubeedge
.io
/v1alpha1
kind
: Device
metadata
:
name
: temperature
labels
:
description
: 'temperature'
manufacturer
: 'test'
spec
:
deviceModelRef
:
name
: temperature
-model
nodeSelector
:
nodeSelectorTerms
:
- matchExpressions
:
- key
: 'name'
operator
: In
values
:
- bluejoy
-jing
status
:
twins
:
- propertyName
: temperature
-status
desired
:
metadata
:
type: string
value
: ''
3.3 部署设备
kubectl apply -f device.yaml
4、构建temperature-mapper镜像
4.1 构建temperature-mapper镜像 (master节点)
cd /home/bluejoy/kubeedge/kubeedge-example/examples/kubeedge-temperature-demo/
docker build -t kubeedge-temperature-mapper:test-0629
.
docker save -o kubeedge-temperature-mapper.tar kubeedge-temperature-mapper:test-0629
4.2 拷贝temperature-mapper镜像到边缘节点bluejoy-jing (master节点)
scp kubeedge-temperature-mapper.tar root@bluejoy-jing:/home/bluejoy/
4.3 load temperature-mapper镜像(edge节点)
docker load -i kubeedge-temperature-mapper.tar
5、部署temperature mapper(master节点)
5.1 修改deployment.yaml文件
cd /home/bluejoy/kubeedge/kubeedge-example/examples/kubeedge-temperature-demo/
vim deployment.yaml
apiVersion
: apps
/v1
kind
: Deployment
metadata
:
name
: temperature
-mapper
labels
:
app
: temperature
spec
:
replicas
: 1
selector
:
matchLabels
:
app
: temperature
template
:
metadata
:
labels
:
app
: temperature
spec
:
hostNetwork
: true
nodeSelector
:
name
: "bluejoy-jing"
containers
:
- name
: temperature
image
: kubeedge
-temperature
-mapper
:test
-0629
imagePullPolicy
: IfNotPresent
securityContext
:
privileged
: true
根据你的实际情况修改如下两个地方: a. 边缘节点名称 b. 镜像名称
5.2 部署temperature-mapper
kubectl create -f deployment.yaml
6、观察temperature的变化情况(master节点)
多次执行以下命令,将会看到temperature的变化:
kubectl get device temperature -o yaml