用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集

用Shifu Cloud部署一个海康威视摄像头的数字孪生

a. 登陆 shifu.cloud

Shifu Cloud 是边无际基于开源物联网开发框架Shifu的一款PaaS产品,它为开发者带来了便携的工具,可以只填写一些设备基本信息来实现物联网设备的接入。在没有Shifu Cloud的情况下需要开发者手动填写一些设备的YAML配置文件,再将虚拟设备进行部署。

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第1张图片

b. 点击添加设备

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第2张图片

c. 选择私有协议 --> 在下拉菜单中选择海康威视,之后点击下一步

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第3张图片

d. 添加设备的基本信息,如设备名,厂商和型号

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第4张图片

e. 填写摄像头的IP地址,RTSP用户名以及密码

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第5张图片

f. 点击接入并前往添加接口

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第6张图片

g. 最后点击上传,Shifu Cloud会自动生成 deviceShifu (数字孪生) 的YAML文件

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第7张图片

h. 点击复制命令,在K3s的master上执行即可

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第8张图片

i. 在命令行复制,输出如下:

root@localhost:~# kubectl apply -f https://******.com/*****/******.yaml
configmap/deviceshifu-devicehikvision-configmap created
service/deviceshifu-devicehikvision-service created
deployment.apps/deviceshifu-devicehikvision-deployment created
edgedevice.shifu.edgenesis.io/edgedevice-devicehikvision created
root@localhost:~#
  • 背后发生了什么:

Shifu Cloud 通过用户填写的一些基本信息,自动生成了设备孪生的YAML文件 (Edge Device,ConfigMap,Deployment和Service),如果您想更深一步的了解请前往 github 中查看具体部署的文件

j. Shifu Cloud 暂不支持加入nodeSelector的功能(敬请期待),默认情况下设备孪生会被部署到master上面,我们需要更新deployment的spec项来让Pod部署在worker节点中

  • 我们通过命令获取当前deployment的名字
root@localhost:~# kubectl get deployment -n deviceshifu
NAME                                     READY   UP-TO-DATE   AVAILABLE   AGE
deviceshifu-devicehikvision-deployment   0/1     1            0           16m
  • 接着通过 kubectl edit deployment -n deviceshifu deviceshifu-devicehikvision-deployment 命令编辑,加入以下两行,保存即可
......
      nodeSelector:                                                                                                                            
        type: worker
......

用K3s集群上的物联网PaaS平台——Shifu Cloud 实现云边协同的控制和数据收集_第9张图片

k. 这时我们再次查看,可以看到数字孪生已经被部署到边缘节点 k3s 上

root@localhost:~# kubectl  get pods -n deviceshifu -owide
NAME                                                      READY   STATUS    RESTARTS   AGE    IP          NODE   NOMINATED NODE   READINESS GATES
nginx                                                     1/1     Running   0          165m   10.42.1.4   k3s               
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s   2/2     Running   0          21s    10.42.1.6   k3s               

运行效果

a. 接下来我们就可以尝试与摄像头进行交互了,让我们在 master 节点上运行一个nginx容器来模拟应用与deviceShifu之间的交互,执行kubectl run nginx-master -n deviceshifu --image=nginx,可以看到 nginx-master 的确运行在 master 节点上:

root@localhost:~# kubectl get po -n deviceshifu -owide
NAME                                                      READY   STATUS    RESTARTS   AGE     IP           NODE               NOMINATED NODE   READINESS GATES
nginx                                                     1/1     Running   0          169m    10.42.1.4    k3s                           
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s   2/2     Running   0          3m53s   10.42.1.6    k3s                           
nginx-master                                              1/1     Running   0          32s     10.42.0.11   localhost                     

b. 我们通过 kubectl exec -it -n deviceshifu nginx -- bash进入 nginx-master 的命令行,直接与数字孪生交互,获取元信息

root@localhost:~# kubectl exec -it -n deviceshifu nginx -- bash
root@nginx:/# curl deviceshifu-devicehikvision-service/info


IP CAMERA
*****
IPCamera
hangzhou
Hikvision.China
DS-2DE3Q140CN-W
DS-*****
c8:02:8f:c8:86:11
V5.5.800
build 210816
V7.3
build 200601
V1.3.4
100316
0x0
IPCamera
88
true
false
B-R-E7-0

通过以下命令可以直接控制摄像头:

curl deviceshifu-devicehikvision-service/move/{up/down/left/right}

如果我们想查看摄像头当前拍摄以及当前视频流,需要将摄像头的service通过 kubectl port-forward -n deviceshifu service/deviceshifu-devicehikvision-service 30080:80 --address 0.0.0.0 代理到本地 在浏览器中输入服务器的IP加端口号,可以直接查看图像/视频流:

:30080/capture
:30080/stream

总结

在此篇文章和上篇文章《物联网轻量级开发方案:在K3s部署Shifu实现云边端闭环》中,我们分享了如何让Shifu运行在 K3s 的集群中实现云边协同的控制和数据收集。

在将来的文章中,Shifu Cloud 也会进一步与Kubernetes 进行整合,增加对于边缘节点的部署控制以及自动将设备孪生部署到集群中,无需手动复制。

非常感谢您看到了这里,我们期待您的反馈,如果觉得文章写得不错或者有任何建议请毫不犹豫地留言。

本文由边无际授权发布

你可能感兴趣的:(物联网,golang,软件架构)