关于物联网:当物联网遇上云原生K8s向边缘计算渗透中

47次阅读

共计 4501 个字符,预计需要花费 12 分钟才能阅读完成。

摘要:K8s 正在向边缘计算浸透,它为边缘侧的利用部署提供了便利性,在肯定水平上转变了边缘利用与硬件之间的关系,将两者的耦合度升高。

本文分享自华为云社区《云原生在物联网中的利用【托付了,物联网!】》,作者:kaliarch。

前言

物联网曾经产生了数量惊人的数据,随着 5G 网络的部署,这些数据将呈指数级增长。治理和应用这些数据是一个挑战。

无论是从交通摄像头、气象传感器、电表等会产生信息,这些信息与智能城市环境中,其余摄像头和传感器的数据相结合,在一个核心地位解决起来可能会太多,尤其是当你在预期设施会对事件做出反馈时。

超大规模云计算环境中已被广泛应用的 Kubernetes(简称 K8s),带入到物联网边缘计算场景中。新成立的 Kubernetes 物联网边缘工作组将采纳运行容器的理念并扩大到边缘,促成 K8s 在边缘环境中的实用。

• 反对将工业物联网 IoT 的连贯设施数量扩大到百万量级,既可反对 IP 设施以直连形式接入 K8s 云平台,又可反对非 IP 设施通过物联网网关接入。
• 利用边缘节点,让计算更贴近设施侧,以便缩小提早、升高带宽需要和进步可靠性,满足用户实时、智能、数据聚合和平安需要:
o 将流数据利用部署到边缘节点,升高设施和云平台之间通信的带宽需要。
o 部署无服务器利用框架,使得边缘侧无需与云端通信,便可对某些紧急情况做出疾速响应。
• 在混合云和边缘环境中提供通用管制平台,以简化治理和操作。

一 背景

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 这样的编排零碎前景光明,它曾经被证实是实现这一工作的最佳工具。

参考资料

• https://github.com/kubeedge/k…
• https://www.cncf.io/blog/2020…

点击关注,第一工夫理解华为云陈腐技术~

正文完
 0