边缘计算云原生开源方案选型比较

随着Kubernetes已经成为容器编排和调度的事实标准 , 各大公有云厂商都已经基于Kubernetes提供了完善的Kubernetes云上托管服务 。同时也看到越来越多的企业、行业开始在生产中使用Kubernetes, 拥抱云原生 。在各行各业数字化转型和上云过程中 , 公有云厂商也在主动拥抱传统线下环境 , 在思考各种各样的解决方案使云上能力向边缘(或线下)延伸 。而Kubernetes由于屏蔽了底层架构的差异性 , 可以帮助应用平滑地运行在不同的基础设施上的特性 , 云上的Kubernetes服务也在考虑拓展其服务边界 , 云原生和边缘计算结合的想法自然就呼之欲出了 。目前国内各个公有云厂商也都开源了各自基于Kubernetes的边缘计算云原生项目 。如华为云的KubeEdge , 阿里云的OpenYurt , 腾讯云的SuperEdge 。目前网上很少有从技术视角来介绍这几个项目优缺点的文章 , 本文试着从技术视角 , 从开源视角来分析这几个项目 , 希望可以给大家做项目选型时提供一些借鉴 。01比较思路这几个项目都是云边一体 , 云边协同的架构 , 走的是Kubernetes和边缘计算结合的路数 , 因此决定从以下几点比较:(1) 各个项目的开源状况:比如开源项目的背景、开源的时间、是否进入了CNCF等;(2)Kubernetes架构:

  • 先对比与Kubernetees的架构差异:主要关注是否修改Kubernetes , 和;Kubernetes一键式转换等
  • 根据架构差异对比和Kubernetes的能力增强点;主要关注边缘自治 , 边缘单元化 , 轻量化等能力
  • 【边缘计算云原生开源方案选型比较】最后看一下架构差异可能带来的影响: 主要关注运维监控能力 , 云原生生态兼容性 , 系统稳定性等方面
(3)对边缘计算场景支持能力:
  • 主要关注是否具备端设备的管理能力
接下来以项目的开源顺序 , 从上述几个方面来介绍各个项目 。02边缘云原生开源项目对比2.1KubeEdge(1)开源状况KubeEdge是华为云于2018年11月份开源的 , 目前是CNCF孵化项目 。其架构如下:

边缘计算云原生开源方案选型比较


(2)与Kubernetes的架构差异首先从架构图可以看到 , 云端(k8s master)增加了Cloud Hub组件和各类controller , 而在边缘端(k8s worker)没有看到原生的kubelet和kube-proxy , 而是一个对原生组件进行重写了EdgeCore组件 。从架构图看EdgeCore是基于kubelet重构的 , 为了保证轻量化 , 裁剪了原生kubelet的部分能力 , 同时也增加了很多适配边缘场景的能力 。具体如下:
  • Cloud Hub+EdgeHub模块: 抛弃了原生kubernetes 的组件间数据同步list/watch机制 , 改成基于websocket/quic协议从云端往边缘推送模式 。
  • 节点元数据缓存模块(MetaManager): 把节点维度的数据持久化在本机的SQLite数据库中 , 当云边网络不稳定时Edged模块将从本地数据库中获取数据用于业务的生命周期管控 。
  • DeviceController+设备管理模块(DeviceTwin): 把设备管理能力直接集成到EdgeCore中 , 为用户提供原生的设备管理能力 。
上述的架构设计 , 对比Kubernetes的能力增强点主要有: