玩转 KubeEdge 保姆级攻略
玩转 KubeEdge 保姆级攻略
前言
KubeEdge 是一个开源系统,可将本机容器化的业务流程和设备管理扩展到 Edge 上的主机。它基于 Kubernetes 构建,并为网络、应用程序部署以及云与边缘之间的元数据同步提供核心基础架构支持。它还支持 MQTT,并允许开发人员编写自定义逻辑并在 Edge 上启用资源受限的设备通信。KubeEdge 由云部分和边缘部分组成,边缘和云部分现已开源。
随着 5G 通信的商用,万物互联时代快速到来,网络边缘的设备数量、产生的数据爆发增长,集中式的数据中心(包括公有云服务)将面临实时性、带宽、能耗、数据隐私的挑战,越来越多的场景需要应用边缘计算。
在 K8s 上,可以通过 K3s、Microk8s、KubeEdge 三种架构实现边缘计算,KubeEdge 以边云协同、边缘侧的轻量和边缘自治能力而获得更多应用。
讲师介绍
目录
1.KubeEdge 架构概览
KubeEdge 组件介绍
EdgeMesh 网络插件介绍
1.1 KubeEdge 架构概览
KubeEdge 架构主要分为云,边,端三个部分。云上主要为 KubeEdge 的控制面,边为 KubeEdge 的边缘节点,端为与边缘节点连接的端侧设备,比如摄像头和传感器等。云上对接了 K8s 的控制平面。KubeEdge 的云上组件 CloudCore 主要会获取一些 K8s 控制面上的云数据,
再通过 DeviceController 做一些处理,然后再通过下边的 PubHub 与边端进行通信。边端的 EdgeCore 会接收 PubHub 传过来的数据,把云上的控制指令和用户数据拿下来。除此之外,EdgeCore 主要做了边缘侧应用管理和设备管理。应用管理能力对接了基于 CNI 标准的容器引擎。比如 container d 和 docker,用来管理容器的生命周期。设备管理能力主要通过 mapper 组件实现了多设备接入管理。
KubeEdge 还引入了 EdgeMesh 插件用来提供边缘节点之间的服务互相访问能力。
1.2 CloudCore 组件介绍
CloudCore 组件中的 EdgeController 和 List/watch,K8s 的元数据进行边缘节点的管理以及应用状态元数据的边缘协同。Device Controller 定义了设备抽象 API,比如 Device 的 CRD。负责接入和管理边缘设备。Sync Controller 主要负责应用层边缘协同可靠性,保持云边数据始终一致。CSI Driver 用于支持第三方 CSI 插件的无缝集成。Admission Webhook 主要应用于实现边缘应用最佳实践,扩展 API 输入校验。CloudHub 用于边云数据通道,负责分发与接收消息。
1.3 edgecore 组件介绍
CloudCore 组件中的 CloudHub 模块与边缘节点建立数据通道,实际上就是和 EdgeHub 模块建立双向的连接,它会负责提供可靠的双向连接同步,CloudHub 和 EdgeHub 之间的数据通道是一条 Websocket 层连接,保证了云边的一个内网穿透,云边之间的连接也可以选择 kata 作为数据通道的协议。在弱网环境下会有更好地 QOS,MetaManager 是 EdgeCore 元数据的本地化模块,用来将云上的数据保存在本地供其他模块使用,比如 KubeEdge 的离线自治能力使用到 MetaManager 的能力。MetaServer 是 MetaManager 的子模块,是 KubeEdge 在 1.7 版本引入的新功能,可以在边缘提供 K8s 引入的原生 APi 访问,是的 K8s Operator 能够无差别的运行在边缘节点上。Edged 模块主要引用了上游 K8s 的 Kubelet-Lite,并做了轻量化的定制,用户也可以根据自己的需要定制不同的场景需要。Edged 的主要职责是与基于 CNI 标准的容器引擎进行对接。EventBus 本质是一个 MQTT 客户端,它定义了一系列的设备消息,用于和边缘设备进行无感知通信。
1.4 EdgeMesh 插件介绍
EdgeMesh 是 KubeEdge 在边缘场景下的网络边缘多边互通的一个解决方案。EdgeMesh 属于 KubeEdge 架构内的一部分,EdgeMesh 分为 EdqeMesh-Server 和 EdgeMesh-Agent 两个组件。EdqeMesh-Server 是一个协调者,同时也承担了数据中继器的角色,EdgeMesh-Agent 部署在
K8s 节点和边缘节点,负责代理应用上的数据传输。EdgeMesh 的 Tunnel-Server 模块主要负责与 Tunnel-Agent 建立连接,协助 P2P 打洞以及为 EdgeMesh-Agent 提供中继能力。EdgeMesh-Agent 包含 Proxier 模块负责配置内核的 iptables 规则,将请求拦截到 EdgeMesh-Agent 进程内。DNS 模块是一个内置的 DNS 解析器,负责将节点内的域名请求解析成一个服务的集群 IP。Traffic 模块是一个基于 Go-Chassis 框架的流量转发模块,负责转发应用间的流量。Controller 模块通过 KubeEdge 的边缘侧 MetaServer 的能力获取 Services、Endpoints、Pods 等元数据。Tunnel-Agent 模块利用中继和打洞技术来提供跨子网通讯的能力。
在 EdgeMesh 插件部署到 KubeEdge 集群后,Agent 与 Agent 之间会建立 Peer 连接,通过边缘侧 List/watch 来监听元数据的变化。proxier 模块会负责配置主机的 iptables 拦截规则用来拦截应用流量。当节点的应用使用 Cluster Ip 或服务域名的方式来访问应用,EdgeMesh-Agent 的 DNS 模块会负责将域名解析成 Cluster IP,EdgeMesh-Agent 再根据规则对后端实例进行负载均衡。通过先前的隧道或者中继转发的方式传递到另一端,这就是 EdgeMesh-Agent 的大致工作原理。
2.KubeEdge 环境搭建与应用
版权声明: 本文为 InfoQ 作者【乌龟哥哥】的原创文章。
原文链接:【http://xie.infoq.cn/article/033c949826bca32ee329305cb】。文章转载请联系作者。
评论