KubeEdge v1.1发布: 将Kubernetes容器存储标准CSI带到边缘

近日,KubeEdge发布了新的特性版本v1.1

在上个版本发布EdgeMesh、EdgeSite等特性后,KubeEdge持续保持高速的迭代开发,本次发布的v1.1新版本包含了容器存储标准CSI集成、对象校验组件Admission Webhook、单机一键启动KubeEdge集群工具、边缘节点支持DockerShim、升级Kubernetes依赖到v1.15 Stable版本,以及25处问题修复。

Release下载地址:

https://github.com/kubeedge/kubeedge/releases/tag/v1.1.0

接下来本文将逐一解读KubeEdge v1.1的新特性。

640?wx_fmt=gif

KubeEdge项目背景

KubeEdge即Kube+Edge,顾名思义就是依托K8s的容器编排和调度能力,实现云边协同、计算下沉、海量设备的平滑接入。

KubeEdge架构上分为三个部分,分别是云、边、端三侧。云端负责云上应用和配置的校验、下发,边缘侧则负责运行边缘应用和管理接入设备,设备端运行各种边缘设备。KubeEdge完整的打通了边缘计算中云、边、设备协同的场景,整体架构如下图。

640?wx_fmt=png

云端组件包括CloudCore、Admission Webhook,它们构建在K8s的调度能力之上,100%兼容K8s原生API,可以运行在任何K8s集群中,包括各厂商的K8s产品、用户在云上自建的K8s集群等。CloudCore中主要包含EdgeController、DeviceController、CloudHub三个模块。

  • EdgeController、DeviceController即K8s传统意义中的控制器,负责与边缘侧应用、设备元数据的同步。

  • CloudHub负责与边缘侧直接通信。

边缘侧组件包括EdgeCore及接入设备的Mappers。Mappers负责接入边缘设备,EdgeCore负责边缘应用与设备管理,其模块主要包括EdgeHub、Edged、设备信息管理模块,应用与设备信息持久化模块。

  • EdgeHub负责与云端直接通信。

  • Edged是边缘侧负责应用生命周期管理的模块,它是裁剪过的Kubelet,在保留上游核心功能的基础上,又满足边缘侧轻量化的需求,其API与Kubelet完全兼容。

  • 设备信息管理模块主要通过MQTT协议与接入到边缘端的设备交互。

  • 应用与设备信息持久化模块负责将应用与设备元数据持久化到本地的SQLite数据库中,以在边缘断网的情况下实现边缘自治。

01

容器存储标准CSI集成

边缘侧运行的程序经常有存储数据的需求,例如边缘的视频收集分析程序,需要将视频信息保存下来。

KubeEdge在提供了ConfigMap、Secret、HostPath、Emptydir、Downwardapi及Projected这些Volume的基础上,在v1.1版本中又集成了容器存储接口CSI,使得用户可以使用K8s标准的存储方案,如StorageClass(SC),PersistentVolume(PV)和PersistentVolumeClaim(PVC)在边缘侧存储数据。

整体架构如下:

640?wx_fmt=png

其中蓝色部分为复用的Kubernetes-CSI组件,包括External-Provisioner、External-Attacher、Node-Driver-Registrar、CSI Driver from Vendor,主要负责在云上监听K8s的PV、PVC、VolumeAttachment等资源。

黄色部分为KubeEdge中新添加的模块,包括CSI Driver from KubeEdge、UDS Server、Managers in Edge Controller、CSI Volume Plugin(In-Tree),主要负责将存储信息同步到边缘侧,以及调用外部插件来管理存储卷。

02

对象校验组件Admission Webhook

随着越来越多的资源对象如Device、DeviceModel等加入到项目中,KubeEdge需要对它们进行校验。v1.1发布了对象校验组件Admission Webhook,目前主要负责对Device、DeviceModel对象的校验。未来还会对Pod进行校验、修改,保证Pod在边缘的运行以及控制离线场景下的迁移等。

 Admission Webhook采用容器化形式部署,用户只需以Pod的形式运行新版本的镜像即可。

03

单机一键启动KubeEdge集群工具

v0.3版本中发布了一键部署工具KubeEdge Installer(keadm),它包含Cloud和Edge两类子命令,Cloud端的命令负责安装一个Kubernetes集群和CloudCore。Edge端的命令负责初始化一个边缘节点并加入到KubeEdge管理面。KubeEdge Installer可以在实际生产场景中部署KubeEdge。

v1.1提供的一键启动KubeEdge集群工具,可将完整的KubeEdge集群运行在一台机器上。用户只需运行该脚本,即可在一台机器上运行一个KubeEdge集群,方便开发者调测。它使用Kind运行一个K8s集群,将KubeEdge相关的组件运行在一台机器上,可以方便地用于开发测试、CI测试等。

04

边缘节点支持DockerShim

v1.0版本中在边缘侧添加了对CRI接口的支持,使得用户可以在边缘侧使用多种运行时,包括Containerd、Cri-o等。

v1.1版本中,为了使用户可以直接使用Docker,且与K8s上游社区保持一致,在边缘侧添加了对DockerShim的支持。

640?wx_fmt=png

05

其他修改

v1.1将K8s依赖升级到了v1.15 Stable版本,Edged对应的K8s版本也升级到了v1.15,用户可以在边缘侧享用最新版K8s的应用管理、存储管理等能力。

v1.0版本的EdgeMesh只支持REST协议,由于K8s的Service原生是L4的,且应用场景非常广泛。在v1.1中EdgeMesh提供了L4 Proxy的能力。

640?wx_fmt=gif

结语

 随着v1.1版本的发布,KubeEdge提供了更完备的边缘应用生命周期管理以及设备管理能力,更加友好的社区贡献者体验,感谢每一位为社区做过贡献的贡献者。后续版本将进一步提升云边协同的效率、可靠性,更多的边缘设备协议支持。更多详情请关注

项目官网:https://kubeedge.iohttps://github.com/kubeedge/kubeedge

640?wx_fmt=gif

END

640?wx_fmt=gif

猜你喜欢

转载自blog.csdn.net/weixin_41033724/article/details/101730601