一、KubeEdge介绍
KubeEdge 是一个开源的系统,可将本机容器化应用编排和管理扩展到边缘端设备。 它构建在Kubernetes之上,为网络和应用程序提供核心基础架构支持,并在云端和边缘端部署应用,同步元数据。100%兼容K8S API,可以使用K8S API原语管理边缘节点和设备。KubeEdge 还支持 MQTT 协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。
1、优势
kubernetes + 容器的组合大大提高了用户创建部署应用的效率。kubernetes 可以把 n 台主机整合成一个集群,用户在 master 节点上通过编写一个 yaml 或者 json 格式的配置文件,也可以通过命令等请求 Kubernetes API 创建应用,就直接将应用部署到集群上的各个节点上,该配置文件中还包含了用户想要应用程序保持的状态,从而生成用户想要的环境。
Kubernetes 作为容器编排的标准,自然会想把它应用到边缘计算上,即通过 kubernetes 在边缘侧部署应用,但是 kubernetes 在边缘侧部署应用时遇到了一些问题,例如:
边缘侧设备没有足够的资源运行一个完整的 Kubelet
一些边缘侧设备是 ARM 架构的,然而大部分的 Kubernetes 发行版并不支持 ARM 架构
边缘侧网络很不稳定,甚至可能完全不通,而 kubernetes 需要实时通信,无法做到离线自治
很多边缘设备都不支持TCP/IP 协议
Kubernetes 客户端(集群中的各个Node节点)是通过 list-watch 去监听 Master 节点的 apiserver 中资源的增删改查,list-watch 中的 watch 是调用资源的 watch API 监听资源变更事件,基于 HTTP 长连接实现,而维护一个 TCP 长连接开销较大。从而造成可扩展性受限。
为了解决包含但不限于以上 Kubernetes 在物联网边缘场景下的问题,从而产生了KubeEdge 。对应以上问题:
KubeEdge 保留了 Kubernetes 的管理面,重新开发了节点 agent,大幅度优化让边缘组件资源占用更低很多
KubeEdge 可以完美支持 ARM 架构和 x86 架构
KubeEdge 有离线自治功能,可以看 MetaManager 组件的介绍
KubeEdge 丰富了应用和协议支持,目前已经支持和计划支持的有:MQTT、BlueTooth、OPC UA、Modbus等。
KubeEdge 通过底层优化的多路复用消息通道优化了云边的通信的性能,可以看 EdgeHub 组件的介绍