本节从组成部分和概念解析两方面来说明边缘计算系统。
1)组成部分:边缘计算系统由云、边、端三部分组成,每部分的解决方案不止一种。本书的云组成部分选择Kubernetes,边组成部分选择KubeEdge,端组成部分选择EdgeX Foundry。
2)概念解析:对组成边缘计算系统的云、边、端三部分涉及的相关概念进行说明。
边缘计算系统组成1.云——Kubernetes
Kubernetes是Google开源的大规模容器编排解决方案。整套解决方案由核心组件、第三方配套组件和运行时组成,具体如表1-1所示。
表 1-1 Kubernetes组成部分说明
组成部分 | 组件名称 | 组件作用 | 备注 |
核心组件 | Kube-apiserver | Kubernetes内部组件相互通信的消息总线,对外暴露集群API资源的唯一出口 | |
Kube-controller | 保证集群内部资源的现实状态与期望状态保持一致 | ||
Kube-scheduler | 将需要调度的负载与可用资源最佳匹配 | ||
Kube-proxy | 为节点内的负载访问和节点间的负载访问做代理 | ||
Kubelet | 执行kube-scheduler的调度结果,操作相应负载 | ||
第三方组件 | etcd | 存储集群的元数据和状态数据 | |
flannel | 集群的跨主机负载网络通信的解决方案 | 需要对原来的数据包进行额外的封装、解封装,性能损耗较大 | |
Calico | 集群的跨主机负载网络通信的解决方案 | 纯三层网络解决方案,不需要额外的封装、解封装,性能损耗较小 | |
coredns | 负责集群中负载的域名解析 | ||
容器运行时 | docker | 目前默认容器运行时 | |
Containerd | 比docker轻量,稳定性与docker相当容器运行时 | ||
Cri-o | 轻量级容器运行时 | 目前稳定性没有保证 | |
frakti | 基于hypervisor的容器运行时 | 目前稳定性没有保证 |
2.边——KubeEdge
KubeEdge是华为开源的一款基于Kubernetes的边缘计算平台,用于将容器化应用的编排功能从云扩展到边缘节点和设备,并为云和边缘之间的网络、应用部署和元数据同步提供基础架构支持。KubeEdge使用Apache 2.0许可,并且可以免费用于个人或商业用途。KubeEdge由云部分、边缘部分和运行时组成,具体如表1-2所示。
表 1-2 KubeEdge组成部分说明
组成部分 | 组件名称 | 组件作用 | 备注 |
云部分 | CloudCore | 负责将云部分的事件和指令下发到边缘端,同时接受边缘端上报的状态信息和事件信息 | |
边缘部分 | EdgeCore | 接收云部分下发的事件和指令,并执行相关指令,同时将边缘的状态信息和事件信息上报到云部分 | |
运行时 | docker | 目前,KubeEdge默认支持docker | 官方表示未来会支持containerd、cri-o等容器运行时 |
3.端——EdgeX Foundry
EdgeX Foundry是一个Linux 基金会运营的开源边缘计算物联网软件框架项目。该项目的核心是基于与硬件和操作系统完全无关的参考软件平台建立的互操作框架,构建即插即用的组件生态系统,加速物联网方案的部署。EdgeX Foundry 使有意参与的各方在开放与互操作的物联网方案中自由协作,无论其是使用公开标准还是私有方案。
EdgeX Foundry微服务集合构成了4个微服务层及2个增强的基础系统服务。4个微服务层包含从物理域数据采集到信息域数据处理等一系列的服务,2个增强的基础系统服务为4个微服务层提供服务支撑。
4个微服务层从物理层到应用层依次为:设备接入服务层(Device Service)、核心服务层(Core Service)、支持服务层(Supporting Service)、导出服务层(Export Service),2个增强的基础系统服务包括安全和系统管理服务,具体说明如表1-3所示。
表 1-3 Edgex Foundry组成部分说明
组成部分 | 组件名称 | 组件作用 | 备注 |
设备接入层服务 | Device-modbus-go | Golang实现对接使用modbus协议设备的服务 | |
Device-camera-go | Golang实现对接摄像头设备的服务 | ||
Device-snmp-go | Golang实现对接SNMP服务 | ||
Device-mqtt-go | Golang实现对接使用MQTT协议设备的服务 | ||
Device-sdk-go | Golang实现对接其他设备的SDK | SDK给设备接入提供了较大的灵活性 | |
核心服务层 | Core-command | 负责向南向设备发送命令 | |
Core-metadata | 负责设备自身能力描述,提供配置新设备并将它们与其拥有的设备服务配对的功能 | ||
Core-data | 负责采集南向设备层数据,并向北向服务提供数据服务 | ||
Registry&config | 负责服务注册与发现,为其他EdgeX Foundry微服务提供关于EdgeX Foundry内相关服务的信息,包括微服务配置属性,采用开源consul实现 | ||
支持服务层 | Support-logging | 负责日志记录 | |
Support-notifications | 负责事件通知 | ||
Support-scheduler | 负责数据调度 | ||
导出服务层 | Export-client | 导出数据的客户端 | |
Export-distro | 导出数据的应用 | ||
两个增强基础服务 | System-mgmt-agent | 提供启动、停止所有微服务的API | |
Sys-mgmt-executor | 负责启动、停止所有微服务的最终执行 |
组成边缘计算系统的云、边、端三部分的相关概念如下。
l 云:涉及的概念包括Container、pod、ReplicaSet、Service、Deployment、Daemonset、Job、Volume、ConfigMap、Namespace、Ingress等。
l 边:目前边缘系统的实现方式是通过对云原有的组件进行裁剪下沉到边缘,所以边涉及的概念是云的子集,而且与云保持一致。
l 端: 部署在边上的一套微服务,目前没有引入新的概念。
目前,边和端都在沿用云的概念,所以本节主要是对云的概念进行解析。下面以图解的形式对云涉及的相关概念进行说明。由图1-1可知,Container是在操作系统之上的一种新的环境隔离技术,使用容器隔离出的独立空间包含应用所需的运行时环境和依赖库。在同一台主机上,容器共享操作系统内核。
图 1-1 container解析
由图1-2可知,pod是由一组容器组成的,在同一个pod内的容器共享存储和网络命名空间。在边缘计算系统中,pod是最小的可调度单元,也是应用负载的最终载体。
图 1-2 pod解析
由图1-3可知,ReplicaSet用来管理pod,负责将pod的期望数量与pod真实数量保持一致。在边缘计算系统中,ReplicaSet负责维护应用多实例和故障自愈。
图 1-3 ReplicaSet解析
由图1-4可知,service做为一组pod的访问代理,并在多个pod之间做负载均衡。pod的生命周期相对比较短暂,变更频繁。service作为一组pod固定不变的标记,除了为与之相关的pod做访问代理和负载均衡外,还会维护service与pod的对应关系。
图 1-4 Service解析
由图1-5可知,Deployment是Replicaset的抽象,在Replicaset的基础上增加了增加了一些高级功能,功能和应用场景与Replicaset相同。
图 1-5 Deployment解析
由图1-6可知,DaemonSet负责将指定的pod在每个节点上都启动一个实例。该功能一般用在部署网络插件、监控插件和日志插件的场景。
图 1-6 DaemonSet解析
由图1-7可知,Job用来管理批量运行的pod,该管理类型的pod会被定期批量触发。与deployment管理的pod的不同,Job管理的pod执行完相应的任务后就退出,不会一直驻留。在边缘计算系统中,一般用Job所管理的pod来训练AI模型。
图 1-7 Job解析
由图1-8可知,Volume是用来给pod提供存储的,通过挂载的方式与对应pod关联。Volume分临时存储和持久存储,临时存储类型的Volume会随着pod的删除被删除,持久存储类型的Volume不会随着pod的删除被删除。
图 1-8 Volume解析
由图1-9可知,ConfigMap做为pod存储配置文件的载体,通过环境变量(env)和文件卷的方式与pod进行关联。在边缘计算系统中,以ConfigMap方式来管理配置信息会更方便。ConfigMap 还可以对配置中的敏感信息进行加密,使配置信息更安全。
图 1-9 ConfigMap解析图
由图1-10可知,Namespace是对pod、service、configmap、deployment、daemonset等资源进行隔离的一种机制,一般用在同一公司的不同团队隔离资源的场景。在边缘计算系统中,用Namespace来对一个团队可以使用的资源(CPU、内存)和创建的负载所需要的资源进行限制。
图 1-10 Namespace解析图
由图1-11可知,Ingress作为集群内与集群外相互通信的桥梁,可以通过Ingress将集群内的服务暴露到集群外,同时可以对进入集群内的流量进行合理的管控。在边缘计算系统中,Ingress是一种资源对象,需要配合Ingress Controller和反向代理工作。
图 1-11 Ingress解析
「未完待续……」
Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved