kubeedge介绍

KubeEdge是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于kubernetes构建,并为网络应用程序提供基础架构支持。云和边缘之间的部署和元数据同步。 KubeEdge使用Apache 2.0许可。并且绝对可以免费用于个人或商业用途。我们欢迎贡献者!

我们的目标是创建一个开放平台,使能边缘计算,将容器化应用编排功能扩展到边缘的节点和设备,后者基于kubernetes构建,并为云和边缘之间的网络,应用部署和元数据同步提供基础架构支持。

以上是官方给的介绍,理解起来就2个核心概念:

  1. 容器编排
  2. 边缘计算

容器编排

容器编排概念已经很成熟了,典型的有dokcer swarm和kubernetes,其都是先将服务已容器的形式进行发布,然后调度、控制整个容器。容器编排和微服务是紧密结合到一起的,微服务的最终呈现必然是容器化。

边缘计算

边缘计算是云厂商喜欢提及的一个概念,例如cloudflare 推出的cf workers服务。所谓的边缘指的是区别于传统的物理机、虚拟机等服务器设备,转而使用一些计算能力较低的设备,例如手机、平板、物联网设备等,这类设备的单机计算能力低,但是数量众多。考虑到部分程序所需要的计算能力并不是很大,这些设备的计算能力足以达到需求的。

kubernetes的缺陷与kubeedge的改进

k8s是容器编排的事实标准,可以以副本集为最小单元进行容器服务的编排。

缺陷一 离线场景的处理

其分为控制平面和工作节点,控制平面服务容器的调度,集群配置的存储,以及针对各个工作节点的实时控制。工作节点则实时通过http通信接收控制平面下发的指令和数据,并且上报自生节点的容器状态。控制平面与工作节点以近乎实时的紧密通信,来保障集群的稳定运行。但是存在一个潜在的问题:如果控制平面和工作节点的通信断了怎么处理,工作节点的容器还能正常工作吗?新的容器任务能够下发吗?这个是k8s自身的一个缺陷,即离线场景的处理。kubeedge实现了离线场景下的调度。kubeedge在设计上直接考虑了离线的清醒,其分为云端边缘端。很明显云端拥有整个集群的所有信息,但是边缘端也存储了一部分配置信息,由于边缘端存储了容器运行所需要的信息,所以即使处在离线场景,也能正常运行(一段时间)。

缺陷二 工作节点的性能问题

kubernetes在设计时只考虑了传统的机器,其pod甚至设计成包含多个容器,并且在部署的时候一般会要求工作节点以类似的配置加入到集群中,且配置不能太低,那么此时像一些低性能的设备就无法加入到集群中使用。

源码解读

kubeedge基于kubernetes做了以下开发:

  1. 实现了cloud-controller

    该控制器用于控制CRD资源device等