如何通过华为云云原生服务中心极速搭建全量KubeEdge生态组件

来源微信公众号:容器魔方

KubeEdge项目是华为云开源的一个基于Kubernetes构建的开放边缘计算平台,实现边云之间的应用管理与部署,跨边云的通信,以及跨边云的南向外设管理等基础能力。

KubeEdge整体发展至今具以下生态:

1.边云服务协同:基于EdgeMesh框架为应用程序提供了跨边云的服务发现与流量代理功能,从而屏蔽了边缘场景下复杂的网络结构。

2.边云 AI 协同架构(Sedna):基于开源 sedna 框架,提供基础的边云协同推理、联邦学习、增量学习等能力, 并实现了基础的模型管理、数据集管理等,使能开发者快速开发边云 AI 协同特性,以及提升用户边云 AI 特性的 训练与部署效率。

 KubeEdge生态未来还将提供:

1.边缘南向服务:南向接入 Mapper,提供外设 Pofile 及解析机制,以及实现对不同南向外设的管理、控制、 业务流的接入,可兼容 EdgeX Foundry 开源生态。

2.边缘数据服务:通过边缘数据服务实现消息、数据、媒体流的按需持久化,并具备数据分析和数据导出的能力。

本文指导用户如何通过华为云云原生服务中心(OSC)以及华为云云原生容器引擎(CCE),以一种更加高效、稳定的方法搭建KubeEdge集群及其全量生态组件。

华为云云原生服务中心介绍

华为云云原生服务中心(Operator Service Center,OSC)是面向服务提供商和服务使用者的云原生服务生命周期治理平台,提供大量开箱即用的云原生服务,支持服务的开发、发布、订阅、部署、升级、更新等,帮助用户简化云原生服务的生命周期管理。云原生服务中心目前已经具备了海量的热门服务,分类包括有AI/机器学习、应用运行时、大数据、数据库、监控、安全、流媒体&消息、集成交付、日志、开发工具、网络、边缘计算等。

更多关于云原生服务中心的信息和使用者指南可以参考:https://support.huaweicloud.com/usermanual-osc/osc_su_0001.html

01 部署流程指导

部署流程导航图如下所示:

02 开始实践

1.创建CCE集群

1.1购买一个华为云CCE集群

进入CCE控制台:https://console.huaweicloud.com/cce2.0,点击右上角购买Kubernetes集群按钮:

1.2购买(至少一个)CCE节点

进入CCE控制面板的资源管理-节点管理中,点击右上角购买节点按钮:

1.3为(至少一个)CCE节点配置公网IP

进入ECS控制台:https://console.huaweicloud.com/ecm,为刚刚购买的节点配置一个公网EIP:

此外还需要配置此节点的安全组,确保节点的10000、10002、20004、20006端口能够被边缘节点访问到。

2.搭建KubeEdge环境

2.1.1进入华为云OSC服务目录界面、订阅Cloudcore服务

进入OSC控制台:https://console.huaweicloud.com/osc,在服务目录中搜索并订阅KubeEdge-Cloudcore服务。

2.1.2创建Cloudcore实例

订阅后,点击创建实例并按照安装指南部署Cloudcore。

2.2纳管(至少一个)边缘节点

2.2.1在边缘节点上安装keadm工具

 可以从https://github.com/kubeedge/kubeedge/releases下载keadm工具包。

 2.2.2从CCE获取边缘节点准入token

进入CCE新版界面:

 选中之前创建的CCE集群后点击CloudShell按钮:

进入CloudShell交互式终端命令行后,可以使用kubectl get secret -nkubeedge tokensecret -o=jsonpath='{.data.tokendata}' | base64 -d命令获取边缘节点的准入token:

用keadm join纳管边缘节点

纳管完边缘节点后,还需根据edgemesh文档(https://edgemesh.netlify.app/guide/getting-started.html#manual-installation)对edgecore.yaml进行配置。

3.部署Edgemesh服务

进入华为云OSC服务目录界面、订阅Edgemesh服务。与步骤2.1相同,订阅Edgemesh服务后根据安装指南安装Edgemesh服务:

4.部署Sedna服务

进入华为云OSC服务目录界面、订阅Sedna服务。与步骤2.1相同,订阅Sedna服务后根据安装指南安装Sedna服务:

运行Sedna云边协同推理Demo

本节主要参考Sedna的官方示例-大小模型协同推理,可以参考文档:

https://github.com/kubeedge/sedna/blob/main/examples/joint_inference/helmet_detection_inference/README.md

1.准备数据、大小模型文件

边缘端节点需下载小模型文件,文件链接:https://kubeedge.obs.cn-north-1.myhuaweicloud.com/examples/helmet-detection-inference/little-model.tar.gz。此外,边缘节点还需要安装EasyDarwin、ffmpeg等工具,以及一个虚拟的mp4视频流。

云端节点需下载大模型文件,文件链接:https://kubeedge.obs.cn-north-1.myhuaweicloud.com/examples/helmet-detection-inference/big-model.tar.gz

2.创建Sedna CRD资源

通过CCE的CloudShell交互式终端,可以方便的创建Sedna的自定义资源,比如Model、JointInferenceService、datasets、federatedlearningjobs、incrementallearningjobs等等。

创建大、小模型的CR:

创建协同推理服务的CR:

通过CloudShell创建完成后,我们可以在CCE的自定义资源看板中确认我们的CR已经创建完毕:

3.获取推理结果

在推理容器运行一段时间后我们可以在边缘节点的/joint_inference/output中获取大量的推理结果图片,选取其中的两张如下:

至此Sedna的协同推理示例已经验证通过了。