什么是 Kubernetes?
什么是 Kubernetes?
Kubernetes(K8s)是一款由谷歌开源的容器集群管理系统。它基于容器技术,为容器化的应用提供部署运行、资源调度、服务发现和动态伸缩等一系列功能。
什么是 KubeEdge?
KubeEdge 做的是基于 k8s 构建,并将容器化的应用编排和设备管理扩展到端上的主机。它由云端和边缘端组成,为网络、应用的部署以及云和边缘之间的元数据同步提供架构支持。KubeEdge 理论上还是 k8s 的一个插件,它完成了 k8s 没有完成的事情,就是连接边缘、设备与云。
KubeEdge 的优点
1.离线模式:k8s 在云端与 node 节点断连时,node 节点恢复后就需要重新 list-watch,但是在 KubeEdge 中,每个节点的 Metadata 被持久化,重启时不需要重新 list-watch。
2.基于 k8s: 借助 KubeEdge,用户可以在 Edge 节点上编排应用,管理设备并监视应用和设备状态,就像云中的传统 Kubernetes 集群一样 大量的应用: 可以轻松地将现有的复杂机器学习,图像识别,事件处理和其他高级应用程序部署和部署到 Edge。
3.可扩展:各个模块较为独立且轻量,我们可以通过更改或增减模块的办法,来扩展 KubeEdge。
4.资源优化:边缘端的资源较少,而 KubeEdge 可以将一些不必要的模块关闭,减少资源的消耗,优化在边缘节点上资源的利用。
5.跨平台:兼容性极强,它不需要区分自己在什么云中,无论是私有云、公有云还是混合云,它都可以完美运行。
6.多架构:无论是 x86 还是 arm 架构,都可以运行 KubeEdge。
7.开发简单:在添加设备和应用部署的方法上,KubeEdge 还支持 SDK,这样大大缩减了开发的流程。开发人员可以编写基于常规 http 或 mqtt 的应用程序,对其进行容器化,然后在 Edge 或 Cloud 中的任何位置运行它们中的更合适的一个。
8.易于维护:k8s 所具有的升级、回滚、监控、警报等功能,KubeEdge 也都拥有。这样更有利于维护方便。
9.支持边缘节点间的通信:通过在 Edge 上运行的业务逻辑,可以在生成数据的本地保护和处理大量数据。这减少了网络带宽需求以及边缘和云之间的消耗。这样可以提高响应速度,降低成本并保护客户的数据隐私。
KubeEdge 基础概念
KubeEdge 分三个部分,分别是云、边、端。
云负责应用和配置的校验和下发,由 k8s 组件和 CloudCore 组成,是整个系统的中枢大脑。
边负责运行应用和管理接入的设备,由 EdgeCore 和数据库 SQLite 组成,是系统中有一定自治能力的功能节点。
端代表设备。
所有 Kubernetes 的组件和指令,都可以在 KubeEdge 中执行。包括 kubectl logs、kubectl create 等指令,还有 deployment、daemonset、statefulset、crd 等资源对象,都可以在 KubeEdge 中使用。
KubeEdge 架构
K8s 组件
1.K8S API Server:提供 k8s 各类寺院对象的增删改查及 watch 等 HTTP 的 REST 借口,是整个系统的数据总线和数据中心。
云端组件
1.EdgeController: 管理 Edge 节点。 一种扩展的 Kubernetes 控制器,它管理边缘节点和 pod 元数据,来定义边缘节点。
2.DeviceController: 负责设备管理。一种扩展的 Kubernetes 控制器,用于管理设备,以便设备元数据/状态数据可以在边缘和云之间同步。
3.CloudHub: 云中的通信接口模块。一个 Web 套接字服务器,负责监视云端的更改、缓存和向 EdgeHub 发送消息。
边缘端组件
1.EdgeHub: Edge 上负责与云服务交互的 Web 套接字客户端。 负责与用于边缘计算(如 KubeEdge 体系结构中的 EdgeController)云服务交互的 Web 套接字客户端,。这包括同步云端资源更新到边缘,以及报告边缘端主机和设备状态对云的更改。
2.MetaManager:是 Edged 与 EdgeHub 之间的消息处理器,还负责将原数据存储到轻量级数据库(SQLite)或从中检索元数据。
3.DeviceTwin: 负责存储设备状态,处理设备属性,处理 DeviceTwin 操作,在边缘设备和边缘节点之间创建成员关系, 将设备状态同步到云以及在边缘和云之间同步 DeviceTwin 信息。它还为应用程序提供查询接口。
4.ServiceBus:充当用于发送/接收有关 HTTP 协议消息的接口
5.EventBus: 使用 MQTT 处理内部边缘通信。MQTT 客户端与 MQTT 服务器(MQTT 服务器)交互,为其他组件提供发布和订阅功能。
6.Edged: 管理节点生命周期的边缘节点模块。它可以帮助用户在边缘节点上部署容器化的工作负载或应用程序。
端组件
1.MQTT Broker:实质上 EventBus 就是一个 MQTT Broker,它负责接收 publisher 的消息,并发送给相应的 subscriber。
2.Mapper:设备上报到 MQTT broker 的一个中间组件,用于接收与转发设备消息。
数据库组件
1.NodeLevel DataStore:主要是 SQLite
总结
KubeEdge 作为 K8s 的一个拓展性插件,它依然依赖于 K8s 本身,不同于 K3s,它对边缘端和设备端的支持,是通过对边缘与设备的强适应来完成的,而不是通过裁剪 k8s 本身。插件化也保证了它极轻量化和极高的性能,组件与组件之间相对的独立保证了解耦与功能的可开关,这些特性都表明它在边缘计算中是个非常实用的利器。
评论