写点什么

基于 KubeEdge 的边缘节点分组管理设计与实现

  • 2022 年 8 月 30 日
    中国香港
  • 本文字数:3128 字

    阅读完需:约 10 分钟

基于KubeEdge的边缘节点分组管理设计与实现

本文分享自华为云社区《基于KubeEdge的边缘节点分组管理设计与实现》,作者:云容器大未来 。


KubeEdge 1.11 版本提供了“边缘节点分组管理”新特性,抽象出了跨地域的应用部署模型。该模型将边缘节点按地区划分为节点组,并将应用所需资源打包成一个整体在节点组上进行部署,降低了边缘应用生命周期管理的复杂度,有效减少运维成本。

边缘应用跨地域部署面临的挑战


图 1 边缘应用跨地域部署示意图


在边缘计算场景中,边缘节点通常分布在不同的地理区域,这些区域中的节点有着计算资源、网络结构和硬件平台等属性上的差异。如图 1 所示,边缘节点部署在杭州、北京和上海等地域,各地域边缘节点的规模不同,不同地域网络不互通,以及不同区域镜像仓库也是不同的,如北京的节点无法通过 IP 直接访问其他区域的节点。


因此在部署边缘应用的时候,通常需要为每个这样的地理区域维护一个 Deployment,对于资源少的区域减少副本数量,对于局域网中的节点需要把镜像地址改为本地镜像仓库的地址,同样也需要为每个地区管理单独的 Service 资源,来解决跨地域节点之间的访问问题。然而随着地理区域和应用数量的增长,对应用的管理会变得越来越复杂,运维成本也随之增加。基于以上背景,KubeEdge 提供了边缘节点分组管理能力,来解决在跨地域应用部署中运维复杂度的问题。

边缘节点分组管理设计与实现


图 2 边缘节点分组整体概览


如图 2 所示,边缘节点分组特性的整体设计图,主要由节点分组、边缘应用和流量闭环三个部分的内容组成,下面会就以上各个部分详细展开。

2.1 节点分组


图 3 节点分组示例


根据边缘节点的地理分布特点,可以把同一区域的边缘节点分为一组,将边缘节点以节点组的形式组织起来,同一节点同时只能属于一个节点组。节点分组可以通过 matchLabels 字段,指定节点名或者节点的 Label 两种方式对节点进行选择。节点被包含到某一分组后,会被添加上 apps.kubeedge.io/belonging-to:nodegroup 的 Label。

2.2 边缘应用(EdgeApplication)


图 4 边缘应用 EdgeApplication 的组成


边缘应用用于将应用资源打包,按照节点组进行部署,并满足不同节点组之间的差异化部署需求。该部分引入了一个新的 CRD: EdgeApplication,主要包括两个部分:


  1. 工作负载模板。主要包括边缘应用所需要的资源模板,例如 Deployment Template、Service Template 和 ConfigMap Template 等;

  2. 工作负载范围。主要针对不同节点组的需求,用于资源模板的差异化配置,包括副本数量差异化配置(Replicas Overrider)和镜像差异化配置(Image Overrider),其中 Image Overrider 包括镜像仓库地址、仓库名称和标签。


对于应用主体,即 Deployment,会根据 Deployment Template 以及差异化配置 Overrider 生成每组所需的 Deployment 版本,通过调整 nodeSelector 将其分别部署到指定分组中。对于应用依赖的其他资源,如 ConfigMap 和 Service,则只会在集群中通过模板创建一个相应的资源。边缘应用会对创建的资源进行生命周期管理,当删除边缘应用时,所有创建的资源都会被删除。

2.3 流量闭环


图 5 流量闭环示意图


通过流量闭环的能力,将服务流量限制在同一节点组内,在一个节点组中访问 Service 时,后端总是在同一个节点组中。当使用 EdgeApplication 中的 Service Template 创建 Service 时,会为 Service 添上 service-topology:range-nodegroup 的 annotation,KubeEdge 云上组件 CloudCore 会根据该 annotation 对 Endpoint 和 Endpointslice 进行过滤,滤除不在同一节点组内的后端,之后再下发到边缘节点。


此外,在下发集群中默认的 Master Service “Kubernetes”所关联的 Endpoint 和 Endpointslice 时,会将其维护的 IP 地址修改为边缘节点 MetaServer 地址,用户在边缘应用中 list/watch 集群资源时,可以兼容 K8s 流量访问方式,实现无缝迁移和对接。

实现原理与设计理念


在这个部分,我们会分享一下边缘节点分组管理特性的设计理念,并结合 KubeEdge 整体架构,详细介绍一下我们的实现原理。


图 6 设计理念


我们希望给用户提供一个统一的运维入口,原本我们需要维护各个地区的 Deployment,如果需要进行增删改查操作,我们需要对每个地区的 Deployment 都执行一遍相同的操作,不仅增加了运维成本,还容易引入人为操作的错误。边缘节点分组管理特性通过引入 EdgeApplication CRD,统一了 Deployment 等资源的运维入口。


另外我们需要提供更大的扩展可能性,在内部实现中,我们统一使用了 Unstructured 结构,降低与特定资源的耦合度,方便后续添加其他资源。另外为了不干涉原生资源和流程,我们降低与 Kubernetes Reconciliation 的耦合度,可以保证 Deployment 等资源操作过程的原生性。


图 7 节点组和边缘应用实现


在边缘节点分组管理特性中,我们引入了两个 CRD,分别是节点组 NodeGroup 和边缘应用 EdgeApplication。在 NodeGroup Reconciliation 中,NodeGroup Controller 用于监听 NodeGroup CRD 的变化,并对节点的 apps.kubeedge.io/belonging-to:nodegroup Label 进行增删改等操作,同时,加入节点组的节点,会上报状态到 NodeGroup CRD 中,我们就可以通过查询 NodeGroup 直接查看节点组内所有节点的状态。


EdgeApplication Reconciliation 与 NodeGroup Reconciliation 类似,由 EdgeApplication Controller 来监听 EdgeApplication CRD 的变化,对相应资源进行增删改等操作,同时对应资源会上报状态到 EdgeApplication CRD 中。


图 8 整体架构


如图 8 所示,是最终的整体架构图。在边缘节点分组管理特性中,我们引入了新的组件 ControllerManager,其中包括了刚才我们介绍的 NodeGroup Controller 和 EdgeApplication Controller,在 CloudCore 中引入了新的模块 EndpointSlice Filter,用于实现流量闭环的能力。


图中蓝色区域是前面已经介绍了的节点分组和边缘应用的内容,在这里再重点介绍一下 Service Template 实现流量闭环能力的过程。首先在 EdgeApplication CRD 中加入 Service 的模板,在创建边缘应用时,Service range-nodegroup 资源也会随之生成,同时控制面会自动为其创建 EndpointSlice。


EndpointSlice 会通过 KubeEdge 的云边通道下发到边缘节点,CloudCore 中的 EndpointSlice Filter 会进行过滤,保证下发到同一节点组内的边缘节点,由此可以保证边缘上的客户端访问始终在一个节点组内。


对于用户来说,图 8 中紫色的线表达了用户需要维护的资源。首先用户需要维护 NodeGroup,来管理节点组中的节点;其次,用户需要维护 EdgeApplication 资源,通过 EdgeApplication 来实现对各个地域边缘应用的生命周期管理。

发展规划


目前我们已经实现了 Deployment、Service 和 ConfigMap 等资源的打包以及流量闭环的能力,并且支持资源的部分状态收集。未来我们将继续拓展边缘节点分组的能力,实现边缘网关,支持 StatefulSet 等更多资源,逐步完善应用状态收集,并在 Kubectl 中支持更友好的资源展现形式。欢迎大家能够加入 KubeEdge 社区,一起完善与增强 KubeEdge 边缘节点分组等方面的能力。

了解 KubeEdge 社区


KubeEdge 是业界首个云原生边缘计算框架、云原生计算基金会内部唯一孵化级边缘计算开源项目,社区已完成业界最大规模云原生边云协同高速公路项目(统一管理 10 万边缘节点/50 万边缘应用)、业界首个云原生星地协同卫星、业界首个云原生车云协同汽车、业界首个云原生油田项目,开源业界首个分布式协同 AI 框架 Sedna 及业界首个边云协同终身学习范式,并在持续开拓创新中。


  • KubeEdge 网站 : https://kubeedge.io

  • GitHub 地址 : https://github.com/kubeedge/kubeedge

  • 松弛地址 : https://kubeedge.slack.com

  • 邮件列表 : https://groups.google.com/forum/#!forum/kubeedge

  • 每周社区例会 : https://zoom.us/j/4167237304

  • 推特 : https://twitter.com/KubeEdge

  • 文档地址 : https://docs.kubeedge.io/en/latest/


本文作者由 KubeEdge 社区 Member——华为云 鲍玥、浙江大学 SEL 实验室 张逸飞原创。


点击关注,第一时间了解华为云新鲜技术~

发布于: 刚刚阅读数: 3
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
基于KubeEdge的边缘节点分组管理设计与实现_云计算_华为云开发者联盟_InfoQ写作社区