手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 设备
背景
EdgeX Foundry 运行在边缘需要一个边缘计算平台作为支撑,在中间起到承上启下的作用,上可连接到中心云,下可管控设备;
边缘计算平台需要 EdgeX Foundry 通用的设备管理能力,打通云边端,形成云边端一体化。二者相辅相成,互相补足,为云边端赋能。
方案设计
完全原生
我们对 EdgeX Foundry 没有任何修改,也没有任何封装,只是原生的部署。下一期我们会提供新的组件与 SuperEdge 及 Kubernetes 和 EdgeX Foundry 的对接,但是我们依然会保持所有组件及能力可选,以插件方式集成,不会强绑定用户使用任何额外的功能。 组件可选
我们对 EdgeX Foundry 集成目前支持到层级可选,后面我们还会继续细化,细化到组件可选,让用户完全按自己的意愿和业务需要去部署需要的组件。 层级可选见 EdgeX Foundry 的架构图:
图片来源于EdgeX Foundry[2]官网,有关 EdgeX Foundry 的更多资料可参考其官网,及EdgeX Foundry Github[3]。
所有参数可自定义
我们是以 yaml 模板方式集成的 EdgeX Foundry, 用户可修改 yaml 模板的任何参数,实现自己业务自定义的需求。
EdgeX Foundry 组件的安装
准备条件
arch=amd64 version=v0.6.0-beta.0 && rm -rf edgeadm-linux-* && wget https://attlee-1251707795.cos.ap-chengdu.myqcloud.com/superedge/$version/$arch/edgeadm-linux-$arch-$version.tar.gz && tar -xzvf edgeadm-linux-* && cd edgeadm-linux-$arch-$version && ./edgeadm
安装 EdgeX Foundry 的组件
./edgeadm addon edgex
Start install edgex-application-services.yml to your cluster
...
Deploy edgex-ui.yml success!
./edgeadm addon edgex [flag]
./edgeadm addon edgex --help
命令查看可以使用的 flag:--app Addon the edgex application-services to cluster.
--core Addon the edgex core-services to cluster.
--device Addon the edgex device-services to cluster.
--support Addon the edgex supporting-services to cluster.
--sysmgmt Addon the edgex system management to cluster
--ui Addon the edgex ui to cluster.
./edgeadm addon edgex --core
目前默认安装的 EdgeX Foundry v1.3 版本,如需安装其他版本的组件,可自行定制 EdgeX Foundry 组件的版本。 以上安装不包含 Security 层相关组件和配置,后期版本可能添加相关功能,也可在项目源文件中自行配置。
kubectl get -n edgex svc/pod
注意:如果出现同一层级的组件部分安装成功,部分安装失败,可直接重新执行安装命令进行更新和安装。如果已安装的组件出现异常无法运行,可以使用 ./edgeadm detach edgex [flag]
对特定层级的组件进行卸载重装。卸载操作具体参考 下文中【 EdgeX Foundry 的卸载】。
EdgeX Foundry 的界面
访问 consul
30850
是 core-consul 服务暴露的端口号。curl http://localhost:30850/ui/dc1/services
访问 UI
30040
是 UI 服务暴露的端口号。curl http://localhost:30040/
EdgeX Foundry 的验证
连接设备
kubectl apply -f https://raw.githubusercontent.com/superedge/superedge/main/deployment/edgex/edgex-device-random.yaml
数据访问
通过以下命令从网页访问 core-data 的服务的端口查看上一步启动的随机数设备向 core 服务发送的最近10条数据,其中30080
是 core-data 服务的端口号,Random-Integer-Generator01
是以上文件安装的虚拟设备。
curl http://localhost:30080/api/v1/event/device/Random-Integer-Generator01/10
设备控制
查看可用命令
30082
是 core-command 服务的端口号。curl http://localhost:30082/api/v1/device/name/Random-Integer-Generator01
Put 指令
curl -X PUT -d '{"Min_Int8": "0", "Max_Int8": "10"}' http://localhost:30082/api/v1/device/2a20be3f-d9e6-4032-aeba-23f602d99a63/command/646fb3c7-f8bc-4b4f-bbad-d566777582d1
此处仅为例子,具体 url 由显示的 Put命令的 url 得到,请记得将 edgex-core-command:48082
字段改为localhost:30082
,将{}
内的内容改为可用的参数,可修改的参数由之前查询命令的显示中得到。其中30082
是 core-command 服务的端口号。
Get 指令
curl http://localhost:30082/api/v1/device/2a20be3f-d9e6-4032-aeba-23f602d99a63/command/646fb3c7-f8bc-4b4f-bbad-d566777582d1
此处仅为例子,具体 url 根据显示获取,请记得将 edgex-core-command:48082
字段改为localhost:30082
, 其中30082
是 core-command 服务的端口号。
[0,10]
范围。数据导出
kubectl apply -f https://raw.githubusercontent.com/superedge/superedge/main/deployment/edgex/edgex-app-service-configurable.yaml
http://www.hivemq.com/demos/websocket-client/
env
下的Writable_Pipeline_Functions_MQTTSend_Addressable_Topic
的值为该主题,部署后查看 Broker 网页中是否有数据出现,若有,说明真正导出成功。注意:如果上述操作中出现网页无法访问等异常,请重新查看 Pod 情况,必要时进行卸载重装。
EdgeX Foundry 的卸载
./edgeadm addon edgex
安装了所有组件或者自定义安装了所有层级组件的,可以执行以下命令将所有 EdgeX Foundry 卸载,同时卸载在主机上产生的挂载数据。如果只是安装了部分层级或者有部分组件缺失的,请根据后文中的通过添加 flag 的方式逐个层级卸载。./edgeadm detach edgex
Detach edgex-application-services.yml success!
...
Detach edgex-configmap.yml success!
Detach edgex completely success!
./edgeadm detach edgex [flag]
对 EdgeX Foundry 进行卸载,可以通过./edgeadm detach edgex –-help
命令查看可以使用的 flag:--app Detach the edgex application-services from cluster.
--core Detach the edgex core-services from cluster.
--device Detach the edgex device-services from cluster.
--support Detach the edgex supporting-services from cluster.
--sysmgmt Detach the edgex system management from cluster.
--ui Detach the ui from cluster.
--completely Detach the configmap and volumes from cluster.
./edgeadm detach edgex –-core
kubectl -n edgex get deploy
注意:
如果删除中出现错误,导致某一层级的组件部分已删除,部分未删除,则对该层级重新执行删除操作将失败,需用 addon 对该层级所有组件重装,再进行删除。
./edgeadm detach edgex
仅适用于所有层组件都存在的情况,如仅存部分组件,请手动进行删除。
后期计划
SuperEdge 相关文章:
使用TKE Edge部署EdgeX Foundry 腾讯云联合多家生态伙伴,重磅开源 SuperEdge 边缘容器项目 【TKE 边缘容器系列】SuperEdge易学易用 【6个短频教学合集】 【TKE 边缘容器系列】从0到N了解 SuperEdge【18篇干货合集】 【TKE 边缘容器系列】一文读懂 SuperEdge 边缘容器架构与原理 【TKE 边缘容器系列】用 edgeadm 一键安装边缘 K8s 集群和原生 K8s 集群 【TKE 边缘容器系列】Addon SuperEdge 让原生 K8s 集群可管理边缘应用和节点 【TKE 边缘容器系列】打破内网壁垒,从云端一次添加成百上千的边缘节点 【TKE 边缘容器系列】SuperEdge 云边隧道新特性:从云端SSH运维边缘节点 【TKE 边缘容器系列】SuperEdge 高可用云边隧道有哪些特点?
落地案例相关资料:
参考资料
2020年全球物联网设备已高达126亿个: 【https://mp.ofweek.com/iot/a556714409057】
[2]EdgeX Foundry: 【https://www.edgexfoundry.org/why_edgex/why-edgex】
[3]EdgeX Foundry Github: 【https://github.com/edgexfoundry】
[4]一键安装边缘独立 Kubernetes 集群: 【https://github.com/superedge/superedge/blob/main/docs/installation/install_edge_kubernetes_CN.md】
互动赢好礼
精读文章,回答问题赢好礼
Q1: 如何实现像操作 K8s 资源一样操作边缘设备,对边缘设备执行相应的指令操作?
Q2: SuperEdge 想和众多的 IoT 设备平台进行通用化对接,您能想到的方式是什么?精读本文,回答以上2个问题。至9月7日上午11点前,将从留言处选出答案最优质及点赞数量最高的前5名,送腾讯定制T恤一件。
往期精选推荐