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

导航至

开发者始终在努力提高软件的可靠性和性能,同时尽可能降低自身成本。实现这一目标的一种方法是边缘计算,它正在各行各业迅速普及。

Gartner 称,如今只有 10% 的数据是在传统数据中心之外创建和处理的。到 2025 年,由于物联网 (IoT) 的快速扩张以及嵌入式设备上可用的处理能力越来越强,这一数字将增加到 75%。麦肯锡已确定了 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 的孵化级 CNCF 项目。KubeEdge 帮助开发者使用相同的统一平台在云端和边缘部署和管理容器化应用程序。KubeEdge 处理边缘和云基础设施之间的网络、部署和数据同步。

KubeEdge 的特性和优势

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

弹性

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

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

低资源占用

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

performance-difference-graph

来源

可扩展性

最近的性能测试表明,KubeEdge 能够成功扩展到 100,000 个并发边缘节点,并在这些边缘节点上管理超过 1,000,000 个活动 Pod。相比之下,默认的 Kubernetes 安装根据其最佳实践文档,不应将其用于超过 5,000 个节点或 150,000 个 Pod 的任何场景。

安全性

KubeEdge 非常重视保持开发者数据的安全。最近的独立安全审计发现没有严重的安全性错误,只有少数中等程度的漏洞被迅速修补。

KubeEdge 架构和组件

KubeEdge 的架构包含许多不同的组件,这些组件分为云组件和边缘组件。在本节中,我们将介绍 KubeEdge 每一侧的一些主要组件。

KubeEdge-Architecture-and-Components

KubeEdge 云组件

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

  • 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 还具有内置的边缘数据复制功能,可用于将数据从边缘实例镜像回云端。

China-Mobile

来源

机器学习和人工智能

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

KubeEdge 提供了自己的工具包 Sedna,使部署来自流行的机器学习框架(如 Tensorflow 和 Pytorch)的模型更加容易。

KubeEdge 入门

要开始使用 KubeEdge,您将需要一个正在运行的 Kubernetes 集群以及硬件或虚拟机来充当运行 Ubuntu 或 CentOS 的边缘节点。设置完成后,您可以使用 Keadm 首先安装 KubeEdge 的云组件,然后创建一个令牌,该令牌可以与另一个 Keadm 命令一起使用,以在边缘设备上安装 KubeEdge 组件。

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

下一步是什么?

一旦您的 KubeEdge 增强型 Kubernetes 集群开始运行,您就可以使用许多选项来了解更多信息。KubeEdge 官方示例仓库是一个很好的资源,展示了不同的用例和真实世界的示例。这些仓库可以克隆并在您的硬件上运行。一些值得查看的示例

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

除了基本示例之外,涵盖公司如何在生产和大规模环境中使用 Kubernetes 在边缘的案例研究也很有用。以下是一些可供参考的资源

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

devices-on-bridge

港珠澳大桥传感器 (来源)

这里要强调的重点应该是 Kubernetes 在边缘计算中的多功能性。各种规模、跨越多个不同行业的公司都在利用 Kubernetes 提供的功能,使其软件更高效、更可靠。