当前位置: 首页 > 科技观察

物联网关键技术:运行在边缘的Kubernetes

时间:2023-03-18 14:53:07 科技观察

Kubernetes(K8S)已经成为云原生标准技术,可以在各类云计算基础设施上提供一致的体验。“容器+Kubernetes”的黄金组合在互联网公司的DevOps中发挥了巨大的作用。随着物联网领域对边缘计算的需求越来越大,最近也出现了运行在边缘侧的K8S的需求和解决方案。如何在边缘使用Kubernetes?根据调查结果,30%的用户希望在边缘部署一个完整的K8S集群,而70%的用户希望在云端部署一个K8S管理平台,在边缘部署一个K8S代理。K8S主要是为中心化的云计算平台设计的,对于边缘计算来说有点太重了。为了将K8S从云端扩展到边缘场景,业界提出了几种不同的开源K8S边缘解决方案。代表方案有华为的KubeEdge、RancherLabs的K3S、阿里云的OpenYurt。KubeEdgeKubeEdge由华为开发,2019年成为CNCF在智能边缘领域的第一个官方项目,云边协同是KubeEdge的一大亮点。KubeEdge通过K8S标准API管理云端的边缘节点、设备和工作负载。边缘节点的系统升级和应用更新可以直接从云端下发,提高边缘运维效率。KubeEdge架构分为三层:云层、边缘层和设备层。Kubernetesmaster运行在云端,用户可以通过kubectl命令行直接管理云端的边缘节点、设备和应用。使用习惯与原生Kubernetes完全一致,用户无需重新适配。KubeEdge系统架构KubeEdge的云进程由两部分组成:CloudHub部署在云端,接收EdgeHub同步到云端的信息;EdgeController部署在云端,控制KubernetesAPIServer与边缘节点、应用和配置的状态同步。KubeEdge的边缘进程主要包括五个组件:Edged是一个轻量级的节点代理Kubelet,实现对Pod、Volume、Node等K8S资源对象的生命周期管理;MetaManager负责本地元数据的持久化,是边缘节点自治能力的关键;EdgeHub是一个多路复用的消息通道,提供可靠高效的云端信息同步;DeviceTwin用于抽象物理设备,在云端生成设备状态图;EventBus从MQTTBroker订阅设备数据。K3SK3S是CNCF官方认证的Kubernetes版本。它专为在资源受限的环境中运行K8S而设计。目的是在x86、ARM64和ARMv7D架构的边缘节点上运行小型K8S集群。由RancherLabs开发,RancherLabs是一家提供容器技术基础设施的初创公司,成立于2014年。K3S这个名字的意思是“5LessThanK8S”。其体积、资源需求、复杂度、使用难度都远低于K8S。其最大的特点是重量轻、使用方便,非常适合边缘计算场景。K3S系统架构K3S分为Server和Agent。Server是K8S管理平面组件,Agent是K8S数据平面组件。与KubeEdge不同的是,K3S的所有组件(包括Server和Agent)都运行在边缘侧。K3S在特定版本的K8S的基础上做了代码修改,包括:使用containerd替代Docker,显着降低运行时占用空间;引入SQLite替代etcd作为管理面数据存储等K3S与KubeEdge对比KubeEdge的管理面部署在云端,边缘节点可以运行代理节点程序,不需要太多资源,云端与边缘通过消息进行协作。从K8S的角度来看,边缘节点+云端构成了一个完整的K8S集群。KubeEdge部署方式:云边结合是一个K8S集群K3S可以在边缘运行一个完整的K8S集群,这意味着K3S需要在每个边缘网络上额外部署一个Kubernetes管理平面。K3S部署方式:每个边缘网络是一个K8S集群。K3S部署方式存在一些问题:部署管理面需要消耗更多的资源;不同K3S集群之间的网络需要连通;管理多个K3S集群需要在其上叠加一层多集群管理组件。遗憾的是,RancherLabs并没有开源这个多集群管理组件。与K3S相比,KubeEdge可以支持云端协同。凭借华为强大的技术和市场能力,KubeEdge技术未来的市场前景非常值得期待。