用 Shifu Cloud 部署一个海康威视摄像头的数字孪生
a. 登陆 shifu.cloud
Shifu Cloud 是边无际基于开源物联网开发框架 Shifu 的一款 PaaS 产品,它为开发者带来了便携的工具,能够只填写一些设施根本信息来实现物联网设施的接入。在没有 Shifu Cloud 的状况下须要开发者手动填写一些设施的 YAML 配置文件,再将虚构设施进行部署。
b. 点击增加设施
c. 抉择公有协定 –> 在下拉菜单中抉择海康威视,之后点击下一步
d. 增加设施的根本信息,如设施名,厂商和型号
e. 填写摄像头的 IP 地址,RTSP 用户名以及明码
f. 点击接入并返回增加接口
g. 最初点击上传,Shifu Cloud 会主动生成 deviceShifu (数字孪生) 的 YAML 文件
h. 点击复制命令,在 K3s 的 master 上执行即可
i. 在命令行复制,输入如下:
[email protected]:~# 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
[email protected]:~#
- 背地产生了什么:
Shifu Cloud 通过用户填写的一些根本信息,主动生成了设施孪生的 YAML 文件(Edge Device,ConfigMap,Deployment 和 Service),如果您想更深一步的理解请返回 github 中查看具体部署的文件
j. Shifu Cloud 暂不反对退出 nodeSelector 的性能(敬请期待),默认状况下设施孪生会被部署到 master 下面,咱们须要更新 deployment 的 spec 项来让 Pod 部署在 worker 节点中
-
咱们通过命令获取以后 deployment 的名字
[email protected]:~# 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
......
k. 这时咱们再次查看,能够看到数字孪生曾经被部署到边缘节点 k3s 上
[email protected]:~# 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 <none> <none>
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s 2/2 Running 0 21s 10.42.1.6 k3s <none> <none>
运行成果
a. 接下来咱们就能够尝试与摄像头进行交互了,让咱们在 master 节点上运行一个 nginx 容器来模仿利用与 deviceShifu 之间的交互,执行kubectl run nginx-master -n deviceshifu --image=nginx
,能够看到 nginx-master
确实运行在 master 节点上:
[email protected]:~# 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 <none> <none>
deviceshifu-devicehikvision-deployment-5f56fb56d9-2ph5s 2/2 Running 0 3m53s 10.42.1.6 k3s <none> <none>
nginx-master 1/1 Running 0 32s 10.42.0.11 localhost <none> <none>
b. 咱们通过 kubectl exec -it -n deviceshifu nginx -- bash
进入 nginx-master
的命令行,间接与数字孪生交互,获取元信息
[email protected]:~# kubectl exec -it -n deviceshifu nginx -- bash
[email protected]:/# curl deviceshifu-devicehikvision-service/info
<?xml version="1.0" encoding="UTF-8"?>
<DeviceInfo version="2.0" xmlns="http://www.hikvision.com/ver20/XMLSchema">
<deviceName>IP CAMERA</deviceName>
<deviceID>*****</deviceID>
<deviceDescription>IPCamera</deviceDescription>
<deviceLocation>hangzhou</deviceLocation>
<systemContact>Hikvision.China</systemContact>
<model>DS-2DE3Q140CN-W</model>
<serialNumber>DS-*****</serialNumber>
<macAddress>c8:02:8f:c8:86:11</macAddress>
<firmwareVersion>V5.5.800</firmwareVersion>
<firmwareReleasedDate>build 210816</firmwareReleasedDate>
<encoderVersion>V7.3</encoderVersion>
<encoderReleasedDate>build 200601</encoderReleasedDate>
<bootVersion>V1.3.4</bootVersion>
<bootReleasedDate>100316</bootReleasedDate>
<hardwareVersion>0x0</hardwareVersion>
<deviceType>IPCamera</deviceType>
<telecontrolID>88</telecontrolID>
<supportBeep>true</supportBeep>
<supportVideoLoss>false</supportVideoLoss>
<firmwareVersionInfo>B-R-E7-0</firmwareVersionInfo>
</DeviceInfo>
通过以下命令能够间接管制摄像头:
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 加端口号,能够间接查看图像 / 视频流:
<SERVER_IP>:30080/capture
<SERVER_IP>:30080/stream
总结
在此篇文章和上篇文章《物联网轻量级开发计划:在 K3s 部署 Shifu 实现云边端闭环》中,咱们分享了如何让 Shifu 运行在 K3s 的集群中实现云边协同的管制和数据收集。
在未来的文章中,Shifu Cloud 也会进一步与 Kubernetes 进行整合,减少对于边缘节点的部署管制以及主动将设施孪生部署到集群中,无需手动复制。
十分感谢您看到了这里,咱们期待您的反馈,如果感觉文章写得不错或者有任何倡议请毫不犹豫地留言。
本文由边无际受权公布