玩转KubeEdge保姆级攻略二

1,236 阅读5分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第33天,点击查看活动详情 玩转KubeEdge保姆级攻略

前言

KubeEdge 是一个开源系统,可将本机容器化的业务流程和设备管理扩展到Edge上的主机。它基于Kubernetes构建,并为网络、应用程序部署以及云与边缘之间的元数据同步提供核心基础架构支持。它还支持MQTT,并允许开发人员编写自定义逻辑并在Edge上启用资源受限的设备通信。KubeEdge由云部分和边缘部分组成,边缘和云部分现已开源。

随着5G通信的商用,万物互联时代快速到来,网络边缘的设备数量、产生的数据爆发增长,集中式的数据中心(包括公有云服务)将面临实时性、带宽、能耗、数据隐私的挑战,越来越多的场景需要应用边缘计算。

在K8s上,可以通过K3s、Microk8s、KubeEdge三种架构实现边缘计算,KubeEdge以边云协同、边缘侧的轻量和边缘自治能力而获得更多应用。

讲师介绍

目录

1.KubeEdge架构概览

  1. KubeEdge组件介绍
  1. EdgeMesh 网络插件介绍

1.1 KubeEdge架构概览

KubeEdge架构主要分为云,边,端三个部分。云上主要为KubeEdge的控制面,边为KubeEdge的边缘节点,端为与边缘节点连接的端侧设备,比如摄像头和传感器等。云上对接了K8s的控制平面。KubeEdge的云上组件CloudCore主要会获取一些K8s控制面上的云数据,

再通过DeviceController做一些处理,然后再通过下边的PubHub与边端进行通信。边端的EdgeCore会接收PubHub传过来的数据,把云上的控制指令和用户数据拿下来。除此之外,EdgeCore主要做了边缘侧应用管理和设备管理。应用管理能力对接了基于CNI标准的容器引擎。比如container d和docker,用来管理容器的生命周期。设备管理能力主要通过mapper组件实现了多设备接入管理。

KubeEdge还引入了EdgeMesh插件用来提供边缘节点之间的服务互相访问能力。

image-20220830234358524

1.2 CloudCore组件介绍

CloudCore组件中的EdgeController和List/watch,K8s的元数据进行边缘节点的管理以及应用状态元数据的边缘协同。Device Controller定义了设备抽象API,比如Device的CRD。负责接入和管理边缘设备。Sync Controller主要负责应用层边缘协同可靠性,保持云边数据始终一致。CSI Driver用于支持第三方CSI插件的无缝集成。Admission Webhook主要应用于实现边缘应用最佳实践,扩展API输入校验。CloudHub用于边云数据通道,负责分发与接收消息。

image-20220830234424087

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客户端,它定义了一系列的设备消息,用于和边缘设备进行无感知通信。

image-20220831215513548

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模块利用中继和打洞技术来提供跨子网通讯的能力。

image-20220831215758091

在EdgeMesh插件部署到KubeEdge集群后,Agent与Agent之间会建立Peer连接,通过边缘侧List/watch来监听元数据的变化。proxier模块会负责配置主机的iptables拦截规则用来拦截应用流量。当节点的应用使用Cluster Ip或服务域名的方式来访问应用,EdgeMesh-Agent的DNS模块会负责将域名解析成Cluster IP,EdgeMesh-Agent再根据规则对后端实例进行负载均衡。通过先前的隧道或者中继转发的方式传递到另一端,这就是EdgeMesh-Agent的大致工作原理。

image-20220831215821114

image-20220830234451906

2.KubeEdge环境搭建与应用

\