
1.1 边缘计算系统
本节从组成部分和概念解析两方面来说明边缘计算系统。
1)组成部分:边缘计算系统由云、边、端三部分组成,每部分的解决方案不止一种。本书的云组成部分选择Kubernetes,边组成部分选择KubeEdge,端组成部分选择EdgeX Foundry。
2)概念解析:对组成边缘计算系统的云、边、端三部分涉及的相关概念进行说明。
1.1.1 边缘计算系统的组成
1. 云——Kubernetes
Kubernetes是Google开源的大规模容器编排解决方案。整套解决方案由核心组件、第三方组件和容器运行时组成,具体如表1-1所示。
表1-1 Kubernetes组成部分说明

2. 边——KubeEdge
KubeEdge是华为开源的一款基于Kubernetes的边缘计算平台,用于将容器化应用的编排功能从云扩展到边缘的节点和设备,并为云和边缘之间的网络、应用部署和元数据同步提供基础架构支持。KubeEdge使用Apache 2.0许可,并且可以免费用于个人或商业用途。
KubeEdge由云部分、边缘部分和容器运行时组成,具体如表1-2所示。
表1-2 KubeEdge组成部分说明

3. 端——EdgeX Foundry
EdgeX Foundry是一个由Linux基金会运营的开源边缘计算物联网软件框架项目。该项目的核心是基于与硬件和操作系统完全无关的参考软件平台建立的互操作框架,构建即插即用的组件生态系统,加速物联网方案的部署。EdgeX Foundry使有意参与的各方在开放与互操作的物联网方案中自由协作,无论其是使用公开标准还是私有方案。
EdgeX Foundry微服务集合构成了4个微服务层及两个增强的基础系统服务。4个微服务层包含从物理域数据采集到信息域数据处理等一系列服务,两个增强的基础系统服务为4个微服务层提供服务支撑。
4个微服务层从物理层到应用层依次为设备服务(Device Service)层、核心服务(Core Service)层、支持服务(Supporting Service)层、导出服务(Export Service)层,两个增强的基础系统服务包括安全和系统管理服务,具体说明如表1-3所示。
表1-3 EdgeX Foundry组成部分说明

1.1.2 概念解析
组成边缘计算系统的云、边、端三部分的相关概念如下。
- 云:涉及的概念包括Container、Pod、ReplicaSet、Service、Deployment、DaemonSet、Job、Volume、ConfigMap、NameSpace、Ingress等。
- 边:目前边缘系统的实现方式是通过对云原有的组件进行裁剪并下沉到边缘,所以边涉及的概念是云的子集,而且与云保持一致。
- 端:部署在边上的一套微服务,目前没有引入新的概念。
目前,边和端都在沿用云的概念,所以本节主要是对云的概念进行解析。下面以图解的形式对云涉及的相关概念进行说明。由图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的对应关系。

图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 Controller和反向代理工作。

图1-11 Ingress解析