前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工业互联网大数据中心使用 KubeEdge 实践

工业互联网大数据中心使用 KubeEdge 实践

作者头像
用户5166556
发布2023-03-18 14:06:28
1.8K0
发布2023-03-18 14:06:28
举报
文章被收录于专栏:让技术和时代并行

项目背景

2018年,工信部启动了国家创新发展工程,建设工业大数据中心。中国移动在该项目中承担了边缘协同和数据采集相关功能的研发。

要求和挑战

要求

  • 从工厂收集生产和运行数据并将数据发送到云端
  • 云中的统一控制:收集什么数据以及如何处理数据

挑战

  • 只有边缘才能主动连接到云。反过来是不可能的(边缘没有公共 IP 地址)。
  • 不能同时支持不同类型的工业设备和协议。
  • 当网络不稳定时,边缘节点无法自主运行。
  • 在边缘节点上运行应用程序不支持边缘计算。
  • 消耗了大量资源。

技术选择

我们考虑的第一个解决方案是 EdgeX。EdgeX 有利于数据收集和管理,但在边缘云协作等方面仍然存在不足。它更像是边缘的自治架构,无法连接到云。我们确实有一些补救措施。例如,我们可以通过 V** 将 EdgeX 节点连接到中央云,但这种补救措施的可扩展性较差。

第二种解决方案是 K3s/K8s。K3s和K8s都不支持边云协同,K8s占用资源过多。虽然 K3s 可以用更少的资源运行,但它不支持设备管理。

然后我们尝试了 OpenNESS,这是一个通用框架。然而,它对我们来说太普遍了。我们需要为几乎所有我们需要的平台编写适配器,例如底层的 Kubernetes。开发工作量比较大,不支持设备管理。

我们曾经想使用OpenYurt,其功能类似于KubeEdge。然而,当时我们的项目已经进行了一半,我们决定不改变。这似乎是一个正确的决定,尤其是在我们现在发现 OpenYurt 不如 KubeEdge 成熟之后。

但是最后,我们还是决定使用 KubeEdge,因为它消耗更少的资源并提供边缘云协作和设备管理。

架构设计

上图展示了国家工业互联网大数据中心的架构。核心是 KubeEdge,它管理设备和应用程序。我们将 KubeEdge 的 CloudCore 部署在云端的 Kubernetes 集群中。所有数据,包括管理数据,都存储在这些云集群中。KubeEdge 的 EdgeCore 部署在工业计算机或工业网关上,以在边缘运行容器化应用程序,包括用于设备管理和数据收集的应用程序。

在 EdgeCore 的深处,您可以看到 Mapper,它是设备管理和数据收集的标准。目前,Mapper 社区提供 Modbus 和蓝牙。例如,如果您想管理自己的相机,则可以使用 Mapper 对其进行编码。上一层,可以看到通过Java和Spring Cloud封装的管理服务。如果 KubeEdge 或 Kubernetes API 暴露给用户,用户可能会使用这些开放的 API 来执行一些可能对数据隔离及其 Kubernetes 集群造成灾难性影响的操作。这就是为什么需要封装。

我们还开发了一个工业应用程序市场,供个人开发者或供应商开发和发布基于 KubeEdge 的免费或付费 Mapper 应用程序。我们希望吸引更多 KubeEdge 用户,同时为 Mapper 开发人员带来实实在在的好处。

数据采集

我们对 KubeEdge 进行了以下改进:

  • 支持更广泛的工业设备和协议。

开始的时候,我们发现 KubeEdge 只支持蓝牙和 Modbus。这些协议在 KubeEdge CRD 中是固定的,无法修改。为了支持不同的工业协议(其中一些是专有的),我们需要添加一些自定义扩展。一种是扩展现有协议,例如 Modbus。不同的设备可能有一些额外的配置。在这种情况下,您可以使用新添加的CustomizedValue字段来自定义字段。另一种选择是使用CustomizedProtocol而不是社区协议来自定义您自己的协议。

  • 简化设备数据采集配置。

工业实践有时与普通 IT 开发不同。通常,我们在定义实例之前定义模板。但是,在工业实践中,先定义实例,然后复制和修改实例中的内容是有意义的。例如,10 个相同类型的温度传感器连接到同一个工业总线。除了它们在 Modbus 上的偏移之外,它们具有相同的属性。在这种情况下,您只需要更改实例中的偏移量,我们通过将设备模型中的PropertyVisitor移动到DeviceInstance 来实现这一点。我们还使配置更加灵活。例如,您可以将设备设置为每小时报告一次温度数据,每天报告一次能耗数据。涉及的配置项,如将 CollectCycle,添加到PropertyVisitor,并将串口和 TCP 配置提取到公共配置中。

  • 优化双属性的传递。
  • 支持旁路数据配置。

绕过数据处理

KubeEdge 向 Kuiper 提供清洗规则。第三方应用直接从边缘 MQTT 设备获取数据。

状态监控

状态监控对于商用产品非常重要。KubeEdge 提供了一个名为 Cloud Stream 的通道。此通道可以与 MetricServer 或 Prometheus 一起使用。但是需要配置iptables来拦截流量,如果这样做,整个流量都会被拦截。

因此,我们开发了另一种解决方案。我们在边缘节点上运行一个 cron 作业容器,例如每 5 秒从边缘节点上的 NodeExporter 拉取数据,然后将其推送到 PushGateway,Prometheus 官方组件。PushGateway 部署在云端。这样,我们就可以使用云端来监控所有边缘节点。

遇到的其他问题

多租户共享

Kubernetes 允许多租户共享。但是,在 KubeEdge 中,不同的设备不能部署在不同的命名空间下。我们需要标记设备并根据标签对其进行过滤。边缘工作节点也不能属于特定的命名空间。它属于租户,仅供租户使用。在这种情况下,节点需要自己封装上层服务。

IP 地址限制

通常,租户将其边缘节点连接到云中的 Kubernetes 集群。因此,集群需要公共 IP 地址,但您的项目可能没有足够的 IP 资源。例如,您有 200 个可用的公共 IP 地址,但您有 1,000 个租户。您将如何为租户集群分配 IP 地址?

IPv6 是最好的解决方案。KubeEdge 支持 IPv6,但我们还没有尝试过。

端口复用

KubeEdge 只使用了几个端口,最多 4 到 5 个。默认端口为 10003,一个公网 IP 地址可以被多个 KubeEdge 实例复用。

高可用性解决方案

KubeEdge 重用 Kubernetes 服务、部署和状态检查来确保服务高可用。

实践

案例 1:OPC-UA 数据收集和处理

用户订阅 OPC-UA 映射器后,将下发到边缘网关,并在配置后与边缘的工业设备协同工作。例如:

OPC-UA 映射器收集温度数据。

边缘节点告警应用直接从边缘节点获取数据。

超过阈值会触发告警,设备被挂起。

KubeEdge 调整阈值。

案例二:工业视频监控

此应用程序在交付到边缘后自主运行。AI 推理在边缘执行。云端与边缘结合,可以在云端训练模型,然后通过KubeEdge将模型推送到边缘。

KubeEdge 管理边缘节点上的视频监控应用程序配置。

视频监控应用程序在边缘节点上自主运行。

从摄像头收集视频流以进行 AI 推理。

检测安全头盔和工作服。

检测未经授权的访问。

概括

基于 KubeEdge 的工业数据采集

  • 通过CustomizedProtocol和CustomizedValue可以支持不同类型的工业协议。
  • 在云端使用ConfigMaps控制边缘数据应用(Mapper)。
  • 绕过数据 (Spec/Data) 简化了时间序列数据的处理。

在实际产品中部署 KubeEdge

  • 多租户解决方案
  • 多种监控解决方案
  • 高可用性解决方案
  • IP地址复用解决方案

有关 KubeEdge 的更多详细信息,请访问

Github:https://github.com/kubeedge/kubeedge

网站:https://kubeedge.io/en/

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云原生技术爱好者社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 项目背景
  • 要求和挑战
    • 要求
      • 挑战
        • 技术选择
          • 架构设计
            • 数据采集
              • 绕过数据处理
                • 状态监控
                • 遇到的其他问题
                  • 多租户共享
                    • IP 地址限制
                    • 实践
                      • 案例 1:OPC-UA 数据收集和处理
                        • 案例二:工业视频监控
                        • 概括
                          • 基于 KubeEdge 的工业数据采集
                            • 在实际产品中部署 KubeEdge
                            • 有关 KubeEdge 的更多详细信息,请访问
                            相关产品与服务
                            容器服务
                            腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
                            领券
                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档