写点什么

KubeEdge 1.12 版本发布,稳定性、安全性、可扩展性均带来大幅提升

  • 2022-10-13
    中国香港
  • 本文字数:4631 字

    阅读完需:约 15 分钟

KubeEdge 1.12版本发布,稳定性、安全性、可扩展性均带来大幅提升

本文分享自华为云社区《KubeEdge 1.12版本发布,稳定性、安全性、可扩展性均带来大幅提升》,作者:云容器大未来。


北京时间 2022 年 9 月 29 日,KubeEdge1.12 版本发布。 新版本新增多个增强功能,在扩展性、稳定性、安全性上均有大幅提升。


KubeEdge v1.12 新增特性:


  • 全新的边缘设备管理接口 DMI

  • 全新的 Edged 实现

  • EdgeMesh 支持高可用(HA)模式

  • 支持批量远程升级边缘节点

  • 边缘原生接口支持认证鉴权

  • CloudHub 可靠性增强

  • 新增摄像头接口标准 GigE 的 Mapper 实现


新特性概览

▍全新的云原生边缘设备管理接口 DMI


1.12 版本中,对全新的云原生边缘设备管理标准 Device Management Interface(DMI),提供了 Alpha 版本支持。DMI 让设备管理者可以用云原生的方式对边缘设备进行管理,它的设计覆盖了设备生命周期管理、设备数据管理,且解耦了管理面与数据面数据使 KubeEdge 的边缘设备管理更稳定、易插拔、更具扩展性。目前本版本支持了边缘设备生命周期管理能力,边缘设备数据管理能力正在实现中。


  • 设备生命周期管理(管理面)


北向依旧通过 CRD 使用 Kubernetes 扩展 API 来管理边缘设备生命周期;南向提供了统一的边缘设备生命周期管理相关的 gRPC 接口,包括设备注册、设备更新、设备删除、设备状态更新等。边缘设备开发者可以以更统一、更灵活、更标准化的方式来开发 Device Mapper。


  • 设备数据管理(数据面)


解耦了设备管理面与数据面,数据面信息可以通过配置灵活地选择在边端被处理或通过数据面通道在云端处理,管理面的云边通道仅传输少量的管控信息,大幅降低了云边通道拥塞的风险,提高了 KubeEdge 系统的稳定性。


DMI 支持用户通过多种形式对边缘设备数据进行访问,包括:


  • Device as a Service(DaaS),通过 Service 的方式访问、拉取边缘设备数据;

  • 通过配置规则的方式,将采集到的设备数据推送到指定接收者。


数据消费者包括:云端设备数据消费者应用、边缘端设备数据消费者应用、第三方数据消费者应用、数据流转平台 broker、云端或边缘端数据持久化数据库等。


通过 DMI 接口,开发者只需按照 DMI 接口标准实现对应协议的 Mapper,并在云上执行相应的 API 操作,就能够将设备接入到 KubeEdge 中来,享受 KubeEdge 边缘计算平台带来的云原生设备管理体验。


更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/4013

▍全新的 Edged 实现


Edged 模块是边缘侧的轻量化容器应用引擎,用于实现边缘 Pod 应用的生命周期管理,以及 Node 状态收集与上报等能力。新版的 Edged 为了保证边缘的轻量化,在原生 Kubelet 中做了优化与裁剪,并保留了裁剪历史记录(Commit History),最终直接调用 Kubelet 入口的 Run 函数启动以集成在 EdgeCore 中。


新版的 Edged,由于保留了对 Kubelet 的裁剪历史记录(Commit History),用户和开发者可以根据历史记录了解裁剪点。直接调用 Kubelet 入口的 Run 函数启动,减少了对 Kubelet 的侵入修改,将大大简化后续 K8s 版本依赖升级,也可将上游 K8s 漏洞修复及时全量同步到 KubeEdge 版本。


新版 Edged 的配置参数也与 Kubelet 保持一致。为了保持 KubeEdge 可靠的云边消息传输和边缘自治能力,在新版 Edged 中,我们仍然通过通过云边可靠通道传输应用、节点相关元消息,并将元数据存入边缘数据库。


对 Kubelet 的优化与裁剪,在 KubeEdge 组织下的 Kubernetes 仓库维护了裁剪后的版本,开发者可以通过 commit 提交记录查看裁剪记录,后续也可以根据需求自主调整裁剪内容。v1.12 版本主要裁剪了 Kubelet 中在边缘不会使用到的特性、第三方内置存储、Cloud Provider 等。


更多裁剪详情可参考:

https://github.com/kubeedge/kubernetes/commits/v1.22.6-kubeedge1

▍EdgeMesh 支持高可用(HA)模式


EdgeMesh 作为 KubeEdge 集群的数据面组件,为应用程序提供了服务发现与流量代理功能,稳定与高效的流量转发是用户对 EdgeMesh 的核心诉求。1.12 版本的 EdgeMesh 新增了 HA 模式的部署方式,以支持 EdgeMesh 中继节点的高可用性。


HA 部署模式下的 EdgeMesh 可以避免中继节点的单点故障问题,同时将中继转发与协助网络穿透的能力从 edgemesh-server 移入到 edgemesh-agent 中,使得具备中继能力的 edgemesh-agent 能够自动承担起中继节点的角色。因此用户可以在合适的位置设置具备中继能力的 edgemesh-agent 以分担云端中继节点的负载,同时也能解决过远的中继节点带来的长时延问题。在多中继节点下,EdgeMesh 系统运行时能够自动选择一个最优的中继节点运行转发流量或协助网络穿透的功能。


用户在升级到 v1.12.0 版本的 EdgeMesh 时,默认无需再部署 edgemesh-server,升级时需要配置中继节点表 relayNodes 中的 nodeName 和 advertiseAddress 参数以指定中继节点和其公网 IP 地址,通过 Helm 安装命令示例如下:


helm install edgemesh --namespace kubeedge \--set agent.psk=<your psk string> \--set agent.relayNodes[0].nodeName=k8s-master,agent.relayNodes[0].advertiseAddress="{1.1.1.1}" \--set agent.relayNodes[1].nodeName=ke-edge1,agent.relayNodes[1].advertiseAddress="{2.2.2.2,3.3.3.3}" \https://raw.githubusercontent.com/kubeedge/edgemesh/main/build/helm/edgemesh.tgz
复制代码


中继节点表 relayNodes 支持指定多个中继节点,每个中继节点支持配置多个公网 IP

地址。如果后续有新的中继节点加入,可以通过执行 kubectl -n kubeedge edit configmap edgemesh-agent-cfg 编辑中继节点表 relayNodes 添加新的中继节点,EdgeMesh 能够自动热加载此配置。


更多信息可参考 proposal:

https://github.com/kubeedge/edgemesh/pull/372

▍支持批量远程升级边缘节点


KubeEdge 集群常常管理数以万计分散的远程边缘节点,如何对这些节点实现方便快捷的升级更新是一个不小的挑战。1.12 版本中新增了 NodeUpgradeJobAPI 及其 Controller 来实现云上批量远程升级边缘节点。


用户可以通过在云上创建 NodeUpgradeJob 来创建升级任务,用户可以指定升级的节点范围以及升级版本号等内容。例如以下配置表示升级 edge-node1 及 edge-node2 两个边缘节点到版本 v1.12.0,升级结果将会显示在 status 字段中,用户可以通过执行 kubectl get nodeupgradejob upgrade-example -oyaml 命令来查看升级结果。


apiVersion: operations.kubeedge.io/v1alpha1kind: NodeUpgradeJobmetadata:  name: upgrade-example  labels:    description: upgrade-labelspec:  version: "v1.12.0"  timeoutSeconds: 60  nodeNames:    - edge-node1    - edge-node2
复制代码


该特性处于 alpha 版本,用户需要手动启用该功能。如下所示在 cloudcore.yaml 配置文件中将 nodeUpgradeJobController 模块置为 true 以启用该功能。


nodeUpgradeJobController:  enable: true  buffer:    nodeUpgradeJobEvent: 1    updateNodeUpgradeJobStatus: 1024  load:    nodeUpgradeJobWorkers: 1
复制代码


更多信息可参考 proposal:

https://github.com/kubeedge/kubeedge/pull/3822

▍边缘原生接口支持认证鉴权


在边缘侧,EdgeCore 组件通过 MetaServer 模块对外提供边缘原生接口能力。为了巩固和加强边缘侧的安全,在用户使用边缘原生接口访问原生 K8s API 时,需要对用户请求进行认证和鉴权。


新版本 MetaServer 可通过 HTTPS 方式启动并提供服务,用户的请求需要经过 Token 方式鉴权,未经过认证或鉴权的请求将无法访问。出于安全性考虑,Token 鉴权方式在当前版本中要求边缘节点保持在线状态,离线场景下的鉴权请求将默认被拒绝。


新增的认证鉴权特性当前处于 Alpha 阶段,通过特性开关(featuregate)requireAuthorization 来控制,默认是关闭状态,即用户默认仍然可通过监听在 localhost 的 HTTP 接口进行无鉴权访问。用户可以在 CloudCore、EdgeCore 的配置文件中配置开启该特性。


apiVersion: edgecore.config.kubeedge.io/v1alpha1kind: EdgeCorefeatureGates:  requireAuthorization: true----------------apiVersion: cloudcore.config.kubeedge.io/v1alpha1kind: CloudCorefeatureGates:  requireAuthorization: true
复制代码


细节可参考:

https://github.com/kubeedge/kubeedge/issues/4108

▍CloubHub 可靠性增强


在大量 KubeEdge 使用场景中,边缘设备物理位置高度分散,并处于不稳定的物理环境中,因此云边通信网络质量较差,面临着高时延、网络中断、闪断闪连等问题。在 KubeEdge 中,CloudHub 是云边之间通信的桥梁,负责边缘设备的连接管理和分发上下行的云边消息。在 1.12 版本中,我们重构了 CloudHub 模块,增强了在上述极端场景下 CloudHub 的稳定性和鲁棒性。


更多信息可参考:

https://github.com/kubeedge/kubeedge/pull/4087

▍新增摄像头接口标准 GigE 的 Mapper 实现


KubeEdge 支持多种协议的边缘设备接入。GigE Vision 是一种摄像头接口标准,在工业机器视觉产品中有广泛的应用。在这个版本中,我们提供了基于 GigE 协议开发的 Mapper,GigE Mapper 可以支持 GigE 视觉协议摄像机、工业相机设备接入 KubeEdge。它使用第三方开源摄像机 SDK 库 rc_genam_api,通过 GeniCam 协议访问不同厂商的摄像机。


每个 GigE Mapper 可以支持多个摄像头同时连接,通过设备 SN 来区分不同的摄像头设备,还可以通过 KubeEdge 北向接口,以 CRD 的形式来对摄像头参数进行配置。通过 GigE Mapper 管理摄像头,还支持摄像头捕获功能,支持导出 PNG 和 PNM 图像格式。目前测试了两种型号的摄像机,Basler acA640 和 HIKROBOT MV-CA050-12GC。


GigE Mapper 是基于 KubeEdge 社区提供的 Mapper 开发框架 Mapper-SDK-GO 来开发实现的。使用 Mapper-SDK-GO 框架可以一键生成 Mapper 程序的主体内容,开发者只需要完成几个关键接口的对应协议的实现,即可开发出对应协议接入的 Mapper,非常方便。


版本注意事


  • EdgeCore 的配置参数已经升级到 v1alpha2 版本,如果需要升级节点到 v1.12,为了适配新版 Edged,您需要手动修改 EdgeCore 中 Edged 模块的配置参数。

  • 如果使 MetaServer 提供的边缘原生接口进行认证鉴权,您需要在 CloudCore 和 EdgeCore 的配置文件中将 RequireAuthorization 特性开关打开,一旦开启,MetaServer 只能以 HTTPS 访问。

  • 如果要将 EdgeMesh 升级到 v1.12,不需要部署现有的 EdgeMesh-Server,且需要配置 relayNodes。

  • 如果要在 KubeEdge v1.12 上运行 EdgeMesh v1.12,并使用 https 请求与 KubeEdge 通信,则必须对 EdgeMesh 设置 kubeAPIConfig.metaServer.security.enable=true。

▍致谢


感谢 KubeEdge 社区技术指导委员会(TSC)、各 SIG 成员对 v1.12 版本开发的支持与贡献,未来 KubeEdge 将持续在新场景探索与支持、稳定性、安全性、可扩展性等方面持续发展与演进!

▍相关链接


Release Notes:https://github.com/kubeedge/kubeedge/blob/master/CHANGELOG/CHANGELOG-1.12.md

GigE Mapper:

https://github.com/kubeedge/mappers-go/tree/main/mappers/gige

Mapper-SDK-GO:

https://github.com/kubeedge/mappers-go/tree/main/mapper-sdk-go

加入 KubeEdge 社区


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


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

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

  • Slack 地址 : https://kubeedge.slack.com

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

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

  • Twitter : https://twitter.com/KubeEdge

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


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

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

提供全面深入的云计算技术干货 2020-07-14 加入

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

评论

发布
暂无评论
KubeEdge 1.12版本发布,稳定性、安全性、可扩展性均带来大幅提升_云计算_华为云开发者联盟_InfoQ写作社区