共计 6272 个字符,预计需要花费 16 分钟才能阅读完成。
作者
连泓乔,华南理工计算机科学与技术大三在读,次要钻研容器畛域,Kubernetes、容器等云原生技术爱好者,SuperEdge 优良贡献者。
王冬,腾讯云研发工程师,专一于 Kubernetes、容器等云原生畛域,SuperEdge 外围开发人员,现负责腾讯云边缘容器 TKE Edge 私有化相干工作。
李腾飞,腾讯容器技术研发工程师,腾讯云 TKE 后盾研发,SuperEdge 外围开发成员。
背景
随着物联网的倒退,连贯云的设施品种和数量越来越多,2020 年寰球物联网设施已高达 126 亿个,并且还以每年百分之十几的速度在增长。对泛滥的设施进行对立管控和泛滥设施产生的数据进行解决是无奈回避的难题。
EdgeX Foundry 是一个开源的边缘设施治理平台,能够部署在网络边缘连接各设施和下层组件进行交互,对设施治理和管制有一套成熟的解决方案。部署 EdgeX Foundry 在边缘集群,能够进一步加强边缘集群的性能,同相比将 EdgeX Foundry 部署在核心星散群,能够利用边缘集群的劣势,更大施展 EdgeX Foundry 的性能。
- EdgeX Foundry 运行在边缘须要一个边缘计算平台作为撑持,在两头起到承前启后的作用,上可连贯到核心云,下可管控设施;
- 边缘计算平台须要 EdgeX Foundry 通用的设施治理能力,买通云边端,造成云边端一体化。二者相辅相成,相互补足,为云边端赋能。
方案设计
为了能让用户疾速在边缘集群应用 EdgeX Foundry 的性能,咱们提供了 EdgeX Foundry 在边缘集群的一键部署。通过配置相干文件,按层级分类,将命令集成到 edgeadm 的 addon 命令下,并进行了相应测试,缩小可能的谬误。使用户仅需简略几步,就能够轻松的在边缘集群上部署和应用 EdgeX Foundry 的性能。
本计划的长处:
-
齐全原生
咱们对 EdgeX Foundry 没有任何批改,也没有任何封装,只是原生的部署。下一期咱们会提供新的组件与 SuperEdge 及 Kubernetes 和 EdgeX Foundry 的对接,然而咱们仍然会放弃所有组件及能力可选,以插件形式集成,不会强绑定用户应用任何额定的性能。
-
组件可选
咱们对 EdgeX Foundry 集成目前反对到层级可选,前面咱们还会持续细化,细化到组件可选,让用户齐全按本人的志愿和业务须要去部署须要的组件。层级可选见 EdgeX Foundry 的架构图:
图片来源于 EdgeX Foundry 官网,无关 EdgeX Foundry 的更多材料可参考其官网,及 EdgeX Foundry Github。
-
所有参数可自定义
咱们是以 yaml 模板形式集成的 EdgeX Foundry,用户可批改 yaml 模板的任何参数,实现本人业务自定义的需要。
EdgeX Foundry 组件的装置
筹备条件
执行以下命令下载 edgeadm 动态安装包,留神批改 ”arch=amd64″ 参数,目前反对[amd64, arm64],下载本人机器对应的体系结构,其余参数不变
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
装置一个边缘集群可参考:一键装置边缘独立 Kubernetes 集群。
装置 EdgeX Foundry 的组件
执行以下命令,即可一键装置 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.
例如只装置 core 服务层的相干组件,可运行
./edgeadm addon edgex --core
其余组件同上装置,替换 flag 即可。如需同时装置多个层级组件,能够同时增加多个 flag。
目前默认装置的 EdgeX Foundry v1.3 版本,如需装置其余版本的组件,可自行定制 EdgeX Foundry 组件的版本。
以上装置不蕴含 Security 层相干组件和配置,前期版本可能增加相干性能,也可在我的项目源文件中自行配置。
部署胜利后,能够通过以下命令查看 Pod 和 Service 的部署状况
kubectl get -n edgex svc/pod
留神 :如果呈现同一层级的组件局部装置胜利,局部装置失败,可间接从新执行装置命令进行更新和装置。如果已装置的组件出现异常无奈运行,能够应用
./edgeadm detach edgex [flag]
对特定层级的组件进行卸载重装。卸载操作具体参考 下文中【EdgeX Foundry 的卸载】。
EdgeX Foundry 的界面
拜访 consul
从网页拜访 core-consul 的服务的端口能够查看各组件的部署状况,其中 30850
是 core-consul 服务裸露的端口号。
curl http://localhost:30850/ui/dc1/services
如果显示红色叉号,阐明组件装置失败,如果刷新依然有效,可查看组件相应日志,排查失败状况,或者重新安装相应组件。
拜访 UI
从网页通过拜访 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
该命令会启动一个随机整数生成器的虚构设施连贯到 EdgeX Foundry,该设施会向 core-data 发送随机数,同时接管 core-command 的命令管制。
数据拜访
通过以下命令从网页拜访 core-data 的服务的端口查看上一步启动的随机数设施向 core 服务发送的最近 10 条数据,其中 30080
是 core-data 服务的端口号,Random-Integer-Generator01
是以上文件装置的虚构设施。
curl http://localhost:30080/api/v1/event/device/Random-Integer-Generator01/10
设施管制
查看可用命令
网页拜访 core-command 服务可查看对虚构设施进行的指令,包含 Put 指令和 Get 指令,其中 Put 用于下发命令,Get 用于获取命令,其中 30082
是 core-command 服务的端口号。
curl http://localhost:30082/api/v1/device/name/Random-Integer-Generator01
Put 指令
执行 Put 命令能够对虚构设施进行管制,这里咱们批改其产生随机数的范畴,从网页中找到 Put 命令的 url,并执行以下命令:
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
这里将虚构设施的生成数范畴改为 0 到 10,并执行 Put 命令。
此处仅为例子,具体 url 由显示的 Put 命令的 url 失去,请记得将
edgex-core-command:48082
字段改为localhost:30082
,将{}
内的内容改为可用的参数,可批改的参数由之前查问命令的显示中失去。其中30082
是 core-command 服务的端口号。
Get 指令
从下面的网页内容中能够失去 Get 命令的 url,应用 Get 的 url 能够获取随机数设施发来的数据。
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]
范畴。
数据导出
执行以下命令部署一个将 EdgeX Foundry 的数据导出至云端的组件
kubectl apply -f https://raw.githubusercontent.com/superedge/superedge/main/deployment/edgex/edgex-app-service-configurable.yaml
启动该组件,该组件能够将 core-data 中的数据导出到 HiveMQ 的公开的 MQTT Broker 上。能够通过网页拜访该代理查看数据是否胜利导出到云端。拜访以下网址进入网页
http://www.hivemq.com/demos/websocket-client/
点击 connect 进行连贯,填写主题为 EdgeXEvents
即可看到 message 一栏呈现虚构设施向 EdgeX Foundry 发送的数据
然而,因为这是私有的 Broker,多方屡次上传的数据都会保留并共存在相应的主题下,所以即便 message 一栏有数据显示,可能是之前导出操作遗留的数据,要想真正验证是否导出胜利,能够在 connect 后尝试创立一个新主题,该主题尚无 message 显示,再批改 mqtt.yaml 中 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.
如需卸载 core 服务的相干组件,可运行
./edgeadm detach edgex –-core
其余组件删除操作同上,替换 flag 即可,反对多个 flag 同时删除多个层级的组件。
能够通过以下命令查看所有 pod 是否已删除。
kubectl -n edgex get deploy
留神:
- 如果删除中呈现谬误,导致某一层级的组件局部已删除,局部未删除,则对该层级从新执行删除操作将失败,需用 addon 对该层级所有组件重装,再进行删除。
./edgeadm detach edgex
仅实用于所有层组件都存在的状况,如仅存局部组件,请手动进行删除。
前期打算
目前咱们实现了和 EdgeX Foundry 集成的第一步,咱们的指标如上面这张图:
是彻底买通云边端,造成云边端齐全的一体化。EdgeX Foundry 也不是咱们设施治理计划惟一的抉择,咱们后续还会和更多的边缘设施平台进行集成和形象,为更通用的 多平台边缘设施无缝接入 而奋斗。
如果在应用中遇到相干问题或有改良意见,可关注【腾讯云原生】公众号,或者在 SuperEdge 社区提 Issues。
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 高可用云边隧道有哪些特点?
落地案例相干材料:
- 腾讯 WeMake 工业互联网平台的边缘容器化实际:打造更高效的工业互联网
- 完爆!用边缘容器,竟能秒级实现团队七八人一周的工作量
-
基于边缘容器技术的工业互联网平台建设
【腾讯云原生】云说新品、云研新术、云游新活、云赏资讯,扫码关注同名公众号,及时获取更多干货!!