当物联网遇上云原生:K8s向边缘计算渗透中
摘要:K8s正在向边缘计算渗透,它为边缘侧的应用部署提供了便利性,在一定程度上转变了边缘应用与硬件之间的关系,将两者的耦合度降低。
本文分享自华为云社区《云原生在物联网中的应用【拜托了,物联网!】》,作者: kaliarch。
前言
物联网已经产生了数量惊人的数据,随着5G网络的部署,这些数据将呈指数级增长。管理和使用这些数据是一个挑战。
无论是从交通摄像头、气象传感器、电表等会产生信息,这些信息与智能城市环境中,其他摄像头和传感器的数据相结合,在一个中心位置处理起来可能会太多,尤其是当你在预期设备会对事件做出反应时。
超大规模云计算环境中已被普遍使用的Kubernetes(简称K8s),带入到物联网边缘计算场景中。新成立的Kubernetes物联网边缘工作组将采用运行容器的理念并扩展到边缘,促进K8s在边缘环境中的适用。
- 支持将工业物联网IoT的连接设备数量扩展到百万量级,既可支持IP设备以直连方式接入K8s云平台,又可支持非IP设备通过物联网网关接入。
- 利用边缘节点,让计算更贴近设备侧,以便减少延迟、降低带宽需求和提高可靠性,满足用户实时、智能、数据聚合和安全需求:
- 将流数据应用部署到边缘节点,降低设备和云平台之间通信的带宽需求。
- 部署无服务器应用框架,使得边缘侧无需与云端通讯,便可对某些紧急情况做出快速响应。
- 在混合云和边缘环境中提供通用控制平台,以简化管理和操作。
一 背景
1.1 KubeEdge简介
KubeEdge 是一个开源的系统,可将本机容器化应用编排和管理扩展到边缘端设备。 它基于Kubernetes构建,为网络和应用程序提供核心基础架构支持,并在云端和边缘端部署应用,同步元数据。KubeEdge 还支持 MQTT 协议,允许开发人员编写客户逻辑,并在边缘端启用设备通信的资源约束。KubeEdge 包含云端和边缘端两部分。
1.2 KubeEdge特点
边缘计算
通过在边缘端运行业务逻辑,可以在本地保护和处理大量数据。KubeEdge 减少了边和云之间的带宽请求,加快响应速度,并保护客户数据隐私。
简化开发
开发人员可以编写常规的基于 http 或 mqtt 的应用程序,容器化并在边缘或云端任何地方运行。
Kubernetes 原生支持
使用 KubeEdge 用户可以在边缘节点上编排应用、管理设备并监控应用程序/设备状态,就如同在云端操作 Kubernetes 集群一样。
丰富的应用程序
用户可以轻松地将复杂的机器学习、图像识别、事件处理等高层应用程序部署到边缘端。
二 KubeEdge简介
2.1 KubeEdge架构
2.2 架构详解
2.2.1 云上部分
- CloudHub: CloudHub 是一个 Web Socket 服务端,负责监听云端的变化, 缓存并发送消息到 EdgeHub。
- EdgeController: EdgeController 是一个扩展的 Kubernetes 控制器,管理边缘节点和 Pods 的元数据确保数据能够传递到指定的边缘节点。
- DeviceController: DeviceController 是一个扩展的 Kubernetes 控制器,管理边缘设备,确保设备信息、设备状态的云边同步。
2.2.2 边缘部分
- EdgeHub: EdgeHub 是一个 Web Socket 客户端,负责与边缘计算的云服务(例如 KubeEdge 架构图中的 Edge Controller)交互,包括同步云端资源更新、报告边缘主机和设备状态变化到云端等功能。
- Edged: Edged 是运行在边缘节点的代理,用于管理容器化的应用程序。
- EventBus: EventBus 是一个与 MQTT 服务器(mosquitto)交互的 MQTT 客户端,为其他组件提供订阅和发布功能。
- ServiceBus: ServiceBus是一个运行在边缘的HTTP客户端,接受来自云上服务的请求,与运行在边缘端的HTTP服务器交互,提供了云上服务通过HTTP协议访问边缘端HTTP服务器的能力。
- DeviceTwin: DeviceTwin 负责存储设备状态并将设备状态同步到云,它还为应用程序提供查询接口。
- MetaManager: MetaManager 是消息处理器,位于 Edged 和 Edgehub 之间,它负责向轻量级数据库(SQLite)存储/检索元数据。
三 实战部署
3.1 keadm部署
注意事项:
- 目前支持keadmUbuntu 和 CentOS 操作系统。RaspberryPi 支持正在进行中。
- 需要超级用户权限(或 root 权限)才能运行。
3.1.1 设置云端(KubeEdge 主节点)
默认情况下10000,10002边缘节点需要可以访问 Cloudcore 中的端口和端口。
keadm init将安装 cloudcore,生成证书并安装 CRD。它还提供了一个可以设置特定版本的标志。
重要说明: 1. kubeconfig 或 master 中至少一个必须正确配置,以便用于验证 k8s 集群的版本和其他信息。1.请确保边缘节点可以使用云节点的本地IP连接云节点,或者您需要使用--advertise-address标志指定云节点的公共IP 。1. --advertise-address(1.3版本后才有效)是云端暴露的地址(会加入到CloudCore证书的SAN中),默认值为本地IP。
例子:
# keadm init --advertise-address="THE-EXPOSED-IP"(only work since 1.3 release)
输出:
Kubernetes version verification passed, KubeEdge installation will start...
...
KubeEdge cloudcore is running, For logs visit: /var/log/kubeedge/cloudcore.log
3.1.2 设置边缘端(KubeEdge 工作节点)
- 从云端获取令牌
keadm gettoken在云端运行将返回令牌,该令牌将在加入边缘节点时使用。
# keadm gettoken
27a37ef16159f7d3be8fae95d588b79b3adaaf92727b72659eb89758c66ffda2.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTAyMTYwNzd9.JBj8LLYWXwbbvHKffJBpPd5CyxqapRQYDIXtFZErgYE
- 加入边缘节点
keadm join将安装 edgecore 和 mqtt。它还提供了一个可以设置特定版本的标志。
例子:
# keadm join --cloudcore-ipport=192.168.20.50:10000 --token=27a37ef16159f7d3be8fae95d588b79b3adaaf92727b72659eb89758c66ffda2.eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTAyMTYwNzd9.JBj8LLYWXwbbvHKffJBpPd5CyxqapRQYDIXtFZErgYE
- 重要说明: 1. --cloudcore-ipportflag 是强制性标志。1. 如果要自动为边缘节点申请证书,--token则需要。1.云端和边缘端使用的kubeEdge版本要一致。
输出:
Host has mosquit+ already installed and running. Hence skipping the installation steps !!!
...
KubeEdge edgecore is running, For logs visit: /var/log/kubeedge/edgecore.log
3.2 二进制部署
注意事项:
- 需要超级用户权限(或 root 权限)才能运行。
3.2.1 设置云端(KubeEdge 主节点)
- 创建 CRD
kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha2_device.yaml
kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/devices/devices_v1alpha2_devicemodel.yaml
kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/reliablesyncs/cluster_objectsync_v1alpha1.yaml
kubectl apply -f https://raw.githubusercontent.com/kubeedge/kubeedge/master/build/crds/reliablesyncs/objectsync_v1alpha1.yaml
- 准备配置文件
# cloudcore --minconfig > cloudcore.yaml
详情请参考云配置。
- 运行
# cloudcore --config cloudcore.yaml
3.2.2 设置边缘端(KubeEdge 工作节点)
3.2.2.1 准备配置文件
- 生成配置文件
# edgecore --minconfig > edgecore.yaml
- 在云端获取代币值:
# kubectl get secret -nkubeedge tokensecret -o=jsonpath='{.data.tokendata}' | base64 -d
- 更新 edgecore 配置文件中的令牌值:
# sed -i -e "s|token: .*|token: ${token}|g" edgecore.yaml
这token就是上面步骤得到的。
详情请参考edge的配置。
3.2.2.2 运行
如果要在同一台主机上运行 cloudcore 和 edgecore,请先运行以下命令:
# export CHECK_EDGECORE_ENVIRONMENT="false"
启动边缘核:
# edgecore --config edgecore.yaml
运行edgecore -h以获取帮助信息并根据需要添加选项。
四 反思
K8s正在向边缘计算渗透,它为边缘侧的应用部署提供了便利性,在一定程度上转变了边缘应用与硬件之间的关系,将两者的耦合度降低。通过KubeEdge,拓展“边缘场景”,可帮助用户加速实现云边协同,在海量边、端设备上完成大规模应用的统一交付、运维与管控。
据Gartner估计,到2025年,超过75%的企业生成数据可以在传统数据中心和云之外创建和处理,像Kubernetes这样的编排系统前景光明,它已经被证明是完成这一任务的最佳工具。
参考资料
- kubeedge/README_zh.md at master · kubeedge/kubeedge · GitHub
- https://www.cncf.io/blog/2020/09/25/kubernetes-could-be-the-one-to-make-the-internet-of-things-iot-reach-its-potential/
点击关注,第一时间了解华为云新鲜技术~
当物联网遇上云原生:K8s向边缘计算渗透中相关推荐
- 物联网“遇上”云原生,会擦出怎样的火花?
据中国物联网产业生态联盟预测,继计算机.互联网和移动通信之后,物联网将引领信息产业革命的新一次浪潮,成为未来社会经济发展.社会进步和科技创新的最重要的基础设施. 另据预测,到2025年,将有1000亿 ...
- 当金融科技遇上云原生,蚂蚁金服是怎么做安全架构的?
蚂蚁金服在过去十五年重塑支付改变生活,为全球超过十二亿人提供服务,这些背后离不开技术的支撑.在 2019 杭州云栖大会上,蚂蚁金服将十五年来的技术沉淀,以及面向未来的金融技术创新和参会者分享.我们将其 ...
- IoTeX 对话 浙江大学Bithacks:当物联网遇上区块链
IoTeX 对话 浙江大学区块链俱乐部Bithacks:当物联网遇上区块链 原创: IoTeX社区 IoTeX社区 8月3日,IoTeX联合创始人Raullen在浙江大学区块链俱乐部举行了一场&qu ...
- [云原生k8s] k8s的CA证书创建和使用
目录 引言 一.部署步骤+实验环境 二.所有节点系统初始化 三.Etcd集群部署 3.1.准备cfssl证书生成工具 3.2.生成Etcd证书 自签证书颁发机构(CA) 自签CA 生成证书: 使用自谦 ...
- 【观察】解读浪潮云遇上“云上云” 技术赋能驱动数字经济落地
毫无疑问,对于今天的中国,云计算已经成为了一种最基础的能力. 尤其是近几年国家先后发布<互联网+行动计划>.<云计算发展行动计划>等一系列政策,加上此前不久浙江.江苏.济南等地 ...
- 【云原生|K8s系列第1篇】:K8s的基础概念、组件架构及实战安装
云原生|K8s系列第1篇目录 1.先从K8s不是什么讲起 2.K8s是什么及核心基础概念 2.1 Container容器 2.2 Pod 2.3 Node 2.4 Label 2.5 Annotati ...
- 5分钟教你如何利用华为云IoT进行物联网设备上云
一.背景 近些年,云计算的发展使得物联网技术突飞猛进,万物联网已经成为这个时代的标识,没有物联网之前,你能想象人在路上就能打开家里的空调?有了物联网,冰箱也能听懂主人在说什么:有了物联网,音响可以直接 ...
- 物联网设备上云难?华为云IoT帮你一键完成模型定义,快速在线调试设备
摘要:在不到3分钟的操作里,不仅完成了一款智慧烟感设备在云端的模型定义,还通过在线调试了解到了设备和远端通信的过程. 本文分享自华为云社区<物联网设备上云难?华为云IoT帮你一键完成模型定义,快 ...
- Kubernetes(简称K8s)将被带入到物联网边缘计算场景中
作者:物女王(彭昭) 物联网智库 原创 最近在边缘计算领域,发生了一次具有非凡意义的合作,有可能以节点的身份被载入物联网史册. 两大著名开源组织,Linux基金会和Eclipse基金会正在合 ...
最新文章
- 不该被忽视的CoreJava细节(四)
- ibatis迁移到mybatis3
- 吴恩达 ML作业提交:Grader sent no response
- SQLyog连接虚拟机中mysql8.0详解,2003、1130、2058错误码解决
- Qt——鼠标拖动调整窗口大小
- RDD基本转换操作:zipWithIndex、zipWithUniqueId
- redis 哨兵 异步_突破Java面试(23-8) - Redis哨兵主备切换的数据丢失问题-阿里云开发者社区...
- java引入bean代码_通过java代码装配bean
- 似然函数(likelihood function)
- centos普通用户和root用户之间相互切换
- 啊哈C语言 第七章 【代码】【习题答案】
- “绿坝-花季护航”软件
- 那些年我们一起追过的ILSVRC冠军
- 零的突破!6所高校、2所“双非”顶刊发文
- git clone时出现的两种错误解决方法
- google map 地理编码API的两种方式
- c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...
- 财务管理都学什么计算机课程,财务管理都学什么课程
- Android Studio中no module问题
- [Linux运维基础]全家桶详解!Linux中RPM包、wget下载、YUM安装、tar包、zip等包管理方式区别与参数详解,附wget下载源码包编译安装方法