编辑推荐: |
本文主要讲解了KubeEdge的基础、MEC
SIG以及KubeEdge 在工业互联网行业的应用架构参考。
本文来自于csdn,由火龙果软件Anna编辑推荐。 |
|
KubeEdge
华为是 KubeEdge 的主要贡献者。该项目于 2018 年 9 月在 GitHub 上启动,并将其贡献给云原生计算基金会(CNCF),是
Kubernetes IOT Edge working group 的关键参考架构之一。
KubeEdge 在 Kubernetes 原生的容器编排和调度能力之上,实现了 云边协同、计算下沉、海量边缘设备管理、边缘自治
等能力。
KubeEdge 主打三个核心理念:
云边协同:边是云的延伸,用户的边可能位于私有网络,因此需要穿透私有网络,通过云来管理私有节点,KubeEdge
默认采用 “WebSocket + 消息封装” 来实现,这样只要边缘网络能访问外网情况下,就能实现双向通信,这就不需要边端需要一个公网的
IP。同时呢, KubeEdge 也优化了原生 Kubernetes 中不必要的一些请求,能够大幅减少通信压力,高时延状态下仍可以工作。
做到 Node 级别的元数据持久化:比如 Pod、ConfigMap 等基础元数据,直接持久化在
Node 设备上,边缘的节点离线之后,它仍可以通过本地持久化的元数据来管理这些应用。熟悉 Kubernetes
的同学应该知道,当 kubelet 重启后,它首先要向 Master 做一次 list watch
获取全量的数据,然后再进行应用管理工作,如果这时候边和云端的网络断开,是无法获得全量的基础元数据,也不能进行故障恢复。KubeEdge
做了元数据的持久化后,可以直接从本地获得这些元数据,保障故障恢复的能力,保证服务的快速 Ready。
极致的轻量化:在大多数边缘计算场景下,节点的资源是非常有限的,KubeEdge 采用的方式是重组
kubelet 组件,移除了内置了面向于云厂商的驱动,通过 CSI 介入,去掉了 Static Pod,同时支持
CRI,支持多种 Container Runtime。在空载时候,内存占用率很低。
基于以上 3 个核心理念,KubeEdge 实现了:
云边可靠协同:
双向多路复用消息通道,支持边缘节点位于私有网络。
WebSocket + 消息封装,大幅减少通信压力,高时延下仍可正常工作。
云边消息校验,网络不稳定时不丢数据。
边缘离线自治:
节点元数据持久化,实现节点级离线自治。
节点故障恢复无需 List-watch,降低网络压力,快速 Ready。
边缘极致轻量:
重组 Kubelet 功能模块,极致轻量化(~70mb 内存占用)。
支持 CRI 集成 Containerd、CRI-O,优化 Runtime 资源消耗。
边缘设备管理:
云端通过 Kubernetes API 管理边缘 Device
上图是 KubeEdge 的整体架构,KubeEdge 对原生 Kubernetes 的架构侵入比较小,大多采用了旁路设计。
KubeEdge 架构主要是分了 “云、边、端” 三部分:
云(Cloud):控制面。
边(Edge):边缘节点。
端(Device):端侧设备。
在 Cloud 层级,运行着 Kubernetes Master,是没有做过改动的原生的 Kubernetes
控制面。KubeEdge 主要是通过旁路设计开发的 CloudCore 组件,边缘节点的同步和维护是通过
CloudCore 来维护,CloudCore 通过 list watch 来跟 Kubernetes
Cluster 做信息同步。而 CloudCore 里面内置的 CloudHub 模块和边端内置的
EdgeHub 模块,构建了一个 WebSocket 消息通道,通过结构化的消息封装,来同步 Kubernetes
的基础元数据,比如:Pod,ConfigMap 等等。另外 CloudCore 里面还包含 EdgeController
和 DeviceController 模块,这两个模块分别用来管理 Kubernetes 的元数据以及跟
Device 相关的 CRD 资源。
在 Edge 层级,KubeEdge 的 EdgeCore 实现了 DataStore 持久化存储,提供本地自治的能力,比如应用或者设备的元素从云上分发下来,首先把它存到一个数据库里,然后再到它的
Edged 或者设备里边,这样就能保证云边网络断开或者边缘节点重启了以后应用的 Edged 它可以从数据库里把应用源数据拿出来,这样就能保证在故障的情况下业务可以正常恢复;Edged
组件相当于一个精简版的 kubelet,支持 CRI,底层可以对接多种 Container Runtime;而
DeviceTwin 和 EventBus 组件分别是应用管理和设备管理,主要是做设备的元数据管理以及
MQTT 协议的订阅和发布,用于与终端设备进行通信。
在 Device 层级,设备终端会有多种多样的访问协议,一些比较新兴的设备可能会直接支持 MQTT
协议,但是对于一些专用的设备或者工控的领域呢,会有他们专用的协议。对此,KubeEdge 采用了 Mapper
的设计,可以将这些专有的设备的协议转换成 MQTT 协议,来实现边缘的应用和云上的设备数据的同步和管理,当然
KubeEdge 最新版本还有 SyncController,用来负责可靠性消息传输的同步问题。
作为一个智能边缘平台,KubeEdge 包含了边端的计算节点部分和云端的管理控制部分,其云边协同体现在:
基于 WebSocket 和 Quic 协议构建了可靠、高效的云边消息通信,并作为云边控制协同、数据协同的通信基础;
扩展了 Kubernetes,实现云边协同编排管理,包括基于云端的边缘控制器 EdgeController
等控制 Kubernetes 应用程序编程接口(API)服务器与边缘节点、应用和配置的状态同步,支持直接通过
kubectl 命令行在云端管理边缘节点、设备和应用;
提供了 DeviceTwin 模块,实现边缘计算节点下挂的边缘设备与云端设备管理之间的同步和控制。
CloudCore
主要由下面几部分组成:
Edge Controller:主要是来负责边缘节点元数据的同步和管理,主要是 Pod,ConfigMap
等应用相关的元数据。
Device Controller:是引入来管理边缘设备的模块,还有一套对应的 CRD 的定义,扩展的
Kubernetes API,用来管理边缘设备。
CloudHub:上文也简单讲过了,主要是管理与边缘端 EdgeHub 的 WebSocket 的连接,下发云端发来的数据,和上传边缘发来数据跟云端同步。
CSI Driver:是为了实现标准的 CSI 方案而做的适配器。
Admission Webhook:主要用来给扩展性 API 做一些合法性的校验。
Edge Code
KubeEdge 边端的核心组件 Edge Core 主要由下面几个模块组成:
EdgeHub:主要是跟云端交互,它跟云端的 CloudHub 是对等的,首先由 EdgeHub
发起云端的 WebSocket 连接。
MetaManager:本地持久化数据管理,KubeEdge 的离线自治的能力主要是由这个模块实现的,简单来说每个
Node 用到了哪些 Pod,哪些 ConfigMap,Secret,都会通过 MetaManager
写入边缘本地的持久化数据库中,现在当前用的 SQLite。
DeviceTwin 和 EventBus:主要是设备管理,比如说设备状态的上报,以及设备控制指令的下发,而
EventBus 相当于 MQTT 的一个 Client。
Edged:是一个非常轻量化裁剪过的 kubelet,使用了应用生命周期管理中最关键的几个模块,去掉了云存储的驱动。支持
CRI 接口,适配多个 Container Runtime。
MEC SIG
云边协同在 MEC 场景下面临的挑战主要包括:
如何简单高效的管理海量物理离散的边缘站点?如何基于 5G 网络事件优化边缘应用匹配不同层级的边缘计算资源。资源层级包括:现场边缘、运营商网络边缘、中心云。
终端如何高效的发现处于不同层级的目标服务,就近接入,获得最低时延体验?
如何简化应用在跨边云部署时的网络配置,并保证网络安全?
如何实现跨边云的微服务流量治理,简化应用开发的复杂度和应用运行的可靠性?
如何通过云原生的方式,将第三方的能力集成进 MEC 平台并开放给用户,如:5G 网络能力、区块链、AI
等技术?如何实现云和 5G 生态的快速集成?
KubeEdge 社区按照 CNCF 成熟治理模式,成立 MEC SIG,负责 5G 边缘计算场景下技术和生态的拓展,以更好的应对如上所述的那些挑战。
Service Resource Manager:跨边云的全局应用部署和网络资源管理。和 5GC
NEF 对接,实现基于 5G 网络事件的应用调度,5G 流量的分发,QoS 配置,应用迁移等。边缘站点支持多租户管理。
Edge Service Discovery:跨边云服务发现,就近接入,可与 Service Resource
Manager 配合,结合地理位置和网络传输最短路径,实现触发式的按需部署应用。
EdgeMesh:跨边云 L3 容器网络配置和安全管理;跨边云微服务通信全链路路由、限流、熔断等治理能力。
ServiceHub:基于云原生的方式实现能力开放平台,配合 Service Broker 实现生态协同,将网络能力和第三方开发者的能力快速集成进
MEC 平台并开放给用户,如区块链、通用 AI,网络高精度室内定位能力、无线网络测量信息能力、QoS
保障能力。还将提供服务注册、鉴权校验、访问控制等 APIGW 的能力。
KubeEdge 在工业互联网行业的应用架构参考
KubeEdge 起到了一个设备管理、应用管理的作用:所有的数据包括管理数据都是保存在云端的 Cloud
Core 中,边缘侧的 Edge Core 运行在工控机或工业网关上,它负责在边缘侧运行容器化应用,包括做设备管理、数据采集的一些应用。 |