(接上篇)
边缘计算整体架构
本节将对云、边、端协同的边缘计算系统的整体架构进行梳理和分析。边缘计算系统整体分为云、边、端三部分,具体如图2-1所示。
1)云: CPU支持X86和ARM架构;操作系统支持Linux、Windows和MacOS;容器运行时支持docker、containerd和cri-o;集群编排使用Kubernetes,包括控制节点、计算节点和集群存储。控制节点核心组件包括kube-apiserver、kube-controller-manager和kube-scheduler,计算节点组件包括Kubelet和kube-proxy,集群存储组件包括etcd。云上的负载以pod形式运行,pod是container组,container是基于操作系统namespace和cgroup隔离出来的独立空间。
2)边:CPU支持X86和ARM架构;操作系统支持Linux;容器运行时支持docker;边缘集群编排使用KubeEdge,包括云部分的CloudCore、边缘部分的EdgeCore和边缘集群存储sqlite。边缘的负载以pod形式运行。
3)端:由运行在边缘集群上的管理端设备的服务框架EdgeX Foundry和端设备组成,EdgeX Foundry从下向上依次为设备服务层、核心服务层、支持服务层、开放服务层,这也是物理域到信息域的数据处理顺序。设备服务层负责与南向设备交互;核心服务层介于北向与南向之间作为消息管道和负责数据存储;支持服务层包含广泛的微服务,主要提供边缘分析服务和智能分析服务;开放服务层整个EdgeX Foundry服务框架的网关层。
图 2-1边缘计算整体架构
部署云部分—— Kubernetes
Kubernetes是一个全新的基于容器技术的分布式架构的云部署方案,是Google开源的容器集群管理系,为部署容器化的应用提供资源调度、服务发现和动态伸缩等一系列完整功能,提高了大规模容器集群管理的便捷性。本书将Kubernetes作为边缘计算系统的云部分解决方案。
本节会对Kubernetes的部署方式进行梳理,主要从Kubernetes相关的容器运行时部署、Kubernetes的学习环境部署、Kubernetes的生产环境部署三方面进行梳理。
Kubernetes 相关的容器运行时部署
Kubernetes通过容器运行时在pod里运行容器,官方默认支持docker容器运行时。除此之外,Kubernetes支持的容器运行时还包括CRI-O、Containerd、Frakti等,具体如表2-1所示。
表2-1 Kubernetes支持的容器运行时
| 容器运行时 | 原理说明 | 备注 |
|---|---|---|
| docker | 基于Linux Namespace、Control Groups和Union filesystem的一种容器运行时实现方式 | 同时支持Linux和Windows操作系统,目前是Kubernetes默认的容器运行时 |
| Containerd | 与docker相比减少了dockerd这一层富功能组件,其底层实现原理与docker相同 | Containerd的可配制性比较强,可以通过插件的方式替换具体实现 |
| CRI-O | RedHat发布的容器运行时, 在同时满足 CRI 标准和 OCI 标准的前提下,将CRI和OCI的实现都进行了轻量化 | 还没有在大规模运行环境的验证,稳定性没有保障 |
| Frakti | 基于Hypervisors的容器运行时,具有独立kernel,比基于Linux Namespace的容器运行时的隔离性要好 | 还没有在大规模运行环境的验证,稳定性没有保障 |
从Kubernetes支持的容器运行时列表,我们可知:
1)docker和Containerd在实现原理上是相同的,只是Containerd裁剪了docker原有的一些富功能;
2) CRI-O为了追求轻量级和简洁,对CRI和OCI重新进行实现;
3)Frakti的目的是实现容器运行时的强隔离性,基于Hypervisors实现容器运行时,使每个容器具有独立的kernel。
目前,业界普遍使用的容器运行时是docker。本节详细说明一下部署docker的相关步骤和注意事项。
「未完待续……」 点击下方标题可阅读技术文章