边缘计算中的Kubernetes:KubeEdge和Kubernetes的边缘计算入门

导航至

开发者总是试图提高他们软件的可靠性和性能,同时尽可能降低自己的成本。实现这一目标的一种方法就是边缘计算,并且它在各个行业中得到了迅速的采用。

根据Gartner的调查,目前只有10%的数据是在传统数据中心外创建和处理的。到2025年,这一数字将增加到75%,这是因为物联网(IoT)的快速发展和嵌入式设备上的更多处理能力。麦肯锡已经确定了超过100个不同的用例,并在未来5-7年内为边缘计算创造了潜在的$2000亿美元的硬件价值。

Kubernetes-on-the-Edge-OG

在这篇文章中,您将了解Kubernetes如何成为公司在其技术堆栈中实施边缘计算的主要工具之一。您将了解边缘计算的一般好处,Kubernetes为边缘计算提供的具体好处,以及如何使用KubeEdge优化Kubernetes以适应边缘计算。

边缘计算的好处

考虑新技术的主要原因应该是它能够真正创造价值。边缘计算有很多炒作,并且在某种程度上已经成为一个流行词,但如果正确利用,它对企业的真正意义是什么?让我们看看边缘计算的一些主要好处。

节省成本

对于某些数据量大的工作负载,在边缘处理数据可能比支付在云端处理这些数据所需的带宽费用更有效率。在某些情况下,计算也可以在客户端设备(如用户的计算机或智能手机)上完成,以减少对您自己的服务器的负载。

您还可以通过在边缘进行实时处理,然后将较低粒度的数据发送到云中进行长期历史分析,来减少长期存储所支付的数据量。

性能提升

通过将计算资源更靠近用户,可以降低延迟,从而用户可以获得更好的体验。由于减少了往返数据中心的数据传输次数,降低了带宽成本,这也意味着新的功能和特性成为可能。

可靠性提升

利用边缘计算优势设计的应用程序,对于终端用户来说将更加可靠。即使网络连接丢失到数据中心,也可以使用边缘计算资源(如物联网)进行关键工作。边缘计算还可以帮助减少您的架构中的单点故障。

安全和隐私保护

边缘计算可以用于提高您的软件安全性和用户的隐私性。通过在边缘保留更多数据,远离集中的数据中心,与更传统的架构相比,安全漏洞的爆发范围可以减小。另一方面,如果未遵循适当的最佳安全实践,拥有大量边缘设备也可能在某些情况下使安全更具挑战性。

边缘计算还可以使遵循数据隐私法规变得更加容易。而不是将数据发送到云端并存储,处理可以在用户的设备上或在边缘完成,然后再删除或转换以删除个人信息。

为什么在边缘使用Kubernetes?

您已经知道采用边缘计算有许多好处,现在的问题是如何实施。从自己搭建平台或使用其他公司提供的服务,到使用Kubernetes处理边缘计算,有各种各样的潜在解决方案。

从技术和业务角度来看,使用Kubernetes进行边缘计算有多个优势。从技术角度来看,K8s已经设计用于跨数据中心工作并处理与边缘计算类似的问题。因此,从多区域数据中心到多个边缘位置并不是很大的跳跃。

从业务角度来看,选择Kubernetes作为您的边缘计算平台,您将获得庞大的社区带来的好处,这将长期节省您构建许多常用功能的工作量,并确保项目得到维护和安全。您还可以获得许多熟悉Kubernetes的开发者的好处,这将使招聘和入职变得更加容易。

Kubernetes边缘架构

您有多种方式可以部署Kubernetes进行边缘计算。让我们看看一些最流行的选项。

使用Kubernetes进行边缘计算的第一种方法是在每个边缘位置简单地部署一个完整的集群。这可能是一个高可用性集群,如果成本不是主要因素,或者是一个单独的服务器。管理所有这些独立的集群会带来一些复杂性,并将需要使用任何主要云提供商的服务或构建自己的定制工具来监控和管理您的集群。

部署Kubernetes的另一种方法是只在数据中心有一个Kubernetes集群,然后在每个位置部署节点进行边缘计算。这种设置更适合资源受限的设备,因为Kubernetes集群的控制面板和其他任务的开销在云端管理。这种策略的缺点是,由于您需要能够处理连接中断并处理控制平面和边缘位置之间的数据同步,因此网络问题变得更加严重。

第三种主要的Kubernetes边缘架构与之前类似,唯一的区别在于边缘处理节点使用一些非常低资源的边缘设备,这些设备负责在Kubernetes边缘节点和设备本身之间传递数据进行处理。

Kubernetes边缘计算分布选项

当涉及到架构以及使用哪个Kubernetes分布时,使用Kubernetes进行边缘计算有多种可用的选项。这些分布解决了一些使用标准Kubernetes进行边缘计算时面临的挑战。

  • 边缘设备通常没有足够的硬件资源来支持完整的Kubernetes基本部署。

  • 默认情况下,Kubernetes没有很好的支持来处理设备的离线操作。

  • 没有默认支持不使用TCP/IP的协议,如Modbus、UPC UA或蓝牙。

为了填补这种期望功能的差距,不同公司创建了一些不同的边缘计算Kubernetes分布。主要选项包括K3sMicroK8sKubeEdge。在本文的其余部分,将重点关注KubeEdge及其在边缘使用Kubernetes时的好处。

什么是KubeEdge?

KubeEdge是一个基于Kubernetes的开源边缘计算框架,是一个孵化级别的CNCF项目。KubeEdge帮助开发者使用相同的统一平台在云和边缘部署和管理容器化应用程序。KubeEdge处理边缘和云基础设施之间的网络、部署和数据同步。

KubeEdge功能和优势

KubeEdge提供了一些让开发者生活更轻松的功能。让我们看看使KubeEdge在边缘计算用例中脱颖而出的几个最重要的功能。

弹性

边缘计算和混合架构的最大挑战之一是如何处理边缘的连接性以及如何同步从边缘到云的数据。KubeEdge在基本Kubernetes之上提供了额外的功能,使这变得更容易。

这将在架构部分更深入地探讨,但一个例子是KubeEdge支持MQTT作为边缘节点之间通信的协议。MQTT是为IoT工作负载设计的,提供了一些处理不可靠网络的方式,这正是KubeEdge使边缘计算更简单的一种方式。

低资源占用

KubeEdge提供了一个边缘组件来与云Kubernetes集群通信并部署容器,运行时仅需要70MB内存。虽然资源需求很小,但KubeEdge在请求响应时间方面仍然能够超越替代方案。当涉及涉及数据包丢失的不可靠网络时,这种性能差异变得更大。在这些条件下,Kube Edge能够保持6ms的响应时间,而K3s、K8s和MicroK8s的响应时间接近一秒。

performance-difference-graph

来源

可扩展性

最近的一项性能测试表明,KubeEdge能够成功扩展到10万个并发边缘节点,并在这些边缘节点上管理超过100万个活动pod。这与默认的Kubernetes安装相比,根据其最佳实践文档,不应用于超过5000个节点或150000个pod的任何事情。

安全性

KubeEdge非常重视确保开发者的数据安全。最近的一项独立安全审计没有发现严重的安全漏洞,只有少数几个中等级别的漏洞,这些漏洞已迅速修复。

KubeEdge架构和组件

KubeEdge的架构包含许多不同的组件,这些组件分为云和边缘组件。在本节中,我们将查看KubeEdge两边的几个主要组件。

KubeEdge-Architecture-and-Components

KubeEdge云组件

所有KubeEdge云组件都属于所谓的“CloudCore”,该组件通过API处理与Kubernetes集群之间的通信,然后与边缘设备进行通信。

  • CloudHub - 通过与边缘设备上的EdgeHub建立websocket连接,将云端的变更传递到边缘。

  • EdgeController - 处理边缘节点和Pod的元数据,并允许将云端数据发送到特定的边缘节点。

  • DeviceController - 与EdgeController类似,处理特定设备的元数据,以便在边缘和云端之间同步数据。

KubeEdge边缘组件

KubeEdge边缘组件属于“EdgeCore”,负责处理应用程序容器、设备和云端之间的通信。

  • EdgeHub - 通过websocket连接到云端,负责将设备数据传递回云端并将云端数据传递到设备。

  • Edged - 在边缘节点上运行的代理,负责管理边缘设备上实际运行的容器和Pod。

  • MetaManager - MetaManager处理Edged和EdgeHub之间的消息处理。MetaManager还通过SQLite提供元数据的持久化和查询。

  • EventBus - MQTT客户端,允许边缘设备与MQTT服务器交互,为KubeEdge提供发布/订阅功能。

  • ServiceBus - HTTP客户端,允许边缘设备通过HTTP与其他服务交互。

  • DeviceTwin - 存储设备状态,并将设备状态与云端同步。DeviceTwin还提供查询连接到KubeEdge的设备的能力。

  • Mappers - KubeEdge Mappers允许边缘节点通过常见的物联网协议(如Modbus、OPC-UA和蓝牙)进行通信。

KubeEdge应用场景

更快的软件部署

KubeEdge的目标是将Kubernetes和云原生引入边缘计算。这意味着开发人员可以获取与云原生相关的所有好处,例如更快的部署、更少的错误和更可靠的软件。无论您构建哪种类型的应用程序,您都将从中受益。

数据存储和处理

采用边缘计算的一个主要原因是允许在数据生成源附近更快、更高效地处理数据。边缘的工作负载通常涉及时间序列数据和传感器的实时数据处理。

来自中国移动的一个示例架构展示了如何使用KubeEdge实现这一点。在边缘,使用Kuiper处理来自MQTT代理的数据。然后使用开源时间序列数据库InfluxDB将数据存储在边缘,InfluxDB非常适合边缘工作负载。一旦存储在InfluxDB中,这些数据可以用于分析、创建预测、生成数据可视化或创建自动警报和任务。InfluxDB还内置了边缘数据复制功能,可用于将边缘实例的数据镜像回云端。

China-Mobile

来源

机器学习和人工智能

部署机器学习模型是边缘计算的另一项常见用例。通过将模型移动到边缘设备,您不仅可以降低带宽成本和延迟,还可以获得更好的隐私和安全性优势,因为数据不会离开设备或边缘位置进行分析。

KubeEdge提供自己的工具包Sedna,以便更容易地从Tensorflow和Pytorch等流行的机器学习框架部署模型。

开始使用KubeEdge

要开始使用KubeEdge,您需要一个运行中的Kubernetes集群以及作为边缘节点运行的硬件或虚拟机(VM),这些节点运行Ubuntu或CentOS。一旦设置完成,您可以使用Keadm首先安装KubeEdge的云组件,然后创建一个令牌。这个令牌可以与另一个Keadm命令一起使用,以在边缘设备上安装KubeEdge组件。

开始使用KubeEdge的另一个选项是使用KubeSphere,这是一个为多云和混合部署设计的Kubernetes发行版。KubeSphere提供了一个组件系统,使向Kubernetes添加功能变得容易,KubeEdge也得到官方支持。您需要做的只是在安装KubeSphere时修改默认的配置文件,并提供您的Kubernetes集群的IP地址和端口号。

接下来是什么?

一旦您的KubeEdge增强型Kubernetes集群运行起来,您就有许多选项可供选择,以了解更多信息。一个非常好的资源是KubeEdge的官方示例存储库,展示了不同的用例和真实世界的示例。这些存储库可以在您的硬件上克隆和运行。一些值得查看的示例包括:

  • 边缘数据分析 - 在边缘设置Apache Beam进行流处理。这个示例可以作为模板使用,其中Beam可以被任何其他流处理工具所取代。
  • 人脸检测 - 这个示例展示了如何部署一个服务,该服务使用在带有摄像头模块的树莓派上运行的OpenCV来检测人脸,并将这些数据发送回云端。
  • 虚拟计数设备 - 如果您没有用于边缘设备的任何硬件,KubeEdge还提供了这个演示,它提供了一个虚拟设备来生成数据。

除了基本示例之外,还有关于公司如何在生产中大规模使用Kubernetes边缘计算案例研究的资料也是很有用的。以下是一些值得查看的资源:

  • 香港珠澳大桥监测 - HZMB桥是世界上最大的海桥,长达34英里。该桥通过桥沿的一系列塔进行监测,每个塔收集14种类型的数据,包括二氧化碳、光照强度、大气压力、噪音和温度。KubeEdge还用于在边缘部署AI和其他商业应用程序,以处理这些数据。
  • 中国电信CDN - 中国电信是中国最大的技术和通信公司之一,市值超过3000亿美元。在推出新的CDN以减少超过3.6亿用户的延迟并提高内容和应用性能时,他们以KubeEdge为基础。
  • Chick-fil-A - Chick-fil-A使用Kubernetes来管理其餐厅中各自的边缘计算基础设施。选择Kubernetes的原因是它提供了边缘的可用性、低延迟以及快速迭代和部署的能力。

devices-on-bridge

HZMB桥传感器(来源

这里的主要启示应该是Kubernetes在边缘计算中的多功能性。来自许多不同行业的各个规模的公司都在利用Kubernetes提供的功能,使他们的软件更加高效和可靠。