附043.KubeEdge边缘云部署实施方案

KubeEdge介绍

KubeEdge概述

KubeEdge 是一个开源系统,将原生的容器化的业务流程和设备管理功能扩展到边缘节点。KubeEdge 是基于 Kubernetes 构建的,并为云,边缘之间的网络通信,应用程序部署以及元数据同步提供核心基础架构支持。同时 KubeEdge 还支持 MQTT,并允许开发人员编写自定义逻辑并在 Edge 上启用一定资源的设备进行通信。

KubeEdge 由云端和边缘端组成。

KubeEdge优势

KubeEdge 的优势主要包括:

  • 边缘计算

借助在 Edge 上运行业务应用,可以在产生数据的边端存储和处理大量数据。这样可以减少边缘和云之间的网络带宽需求和消耗,提高响应速度,降低成本并保护客户的数据隐私。

  • 简化开发

开发人员可以编写基于 HTTP 或 MQTT 的常规应用程序,对其进行容器化,然后在 Edge 或 Cloud 中的任何一个更合适的位置运行应用程序。

  • Kubernetes 原生支持

借助 KubeEdge,用户可以像在传统的 Kubernetes 集群一样,在 Edge 节点上编排应用程序,管理设备并监视应用程序和设备状态。

  • 丰富的应用

可以轻松地将现有的复杂机器学习,图像识别,事件处理等其他高级应用程序部署到 Edge。

  • 云边可靠协作
    在不稳定的云边网络上,可以保证消息传递的可靠性,不会丢失。

  • 边缘自治
    当云边之间的网络不稳定或者边缘端离线或重启时,确保边缘节点可以自主运行,同时确保边缘端的应用正常运行。

  • 边缘设备管理
    通过 Kubernetes 的原生API,并由CRD来管理边缘设备。

  • 极致轻量的边缘代理
    在资源有限的边缘端上运行的非常轻量级的边缘代理(EdgeCore)。

KubeEdge架构

KubeEdge 由以下组件组成:

云上(CloudCore)部分:
CloudHub: Web 套接字服务器,负责在云端缓存信息、监视变更,并向 EdgeHub 端发送消息。
EdgeController: kubernetes 的扩展控制器,用于管理边缘节点和 pod 的元数据,以便可以将数据定位到对应的边缘节点。
DeviceController: 一个扩展的 kubernetes 控制器,用于管理边缘 IoT 设备,以便设备元数据/状态数据可以在 edge 和 cloud 之间同步。

边缘(EdgeCore)部分:
EdgeHub: Web 套接字客户端,负责与 Cloud Service 进行交互以进行边缘计算(例如 KubeEdge 体系结构中的 Edge Controller)。这包括将云侧资源更新同步到边缘,并将边缘侧主机和设备状态变更报告给云。
Edged: 在边缘节点上运行并管理容器化应用程序的代理。
EventBus: 一个与 MQTT 服务器(mosquitto)进行交互的 MQTT 客户端,为其他组件提供发布和订阅功能。
ServiceBus: 用于与 HTTP 服务器 (REST) 交互的 HTTP 客户端,为云组件提供 HTTP 客户端功能,以访问在边缘运行的 HTTP 服务器。
DeviceTwin: 负责存储设备状态并将设备状态同步到云端。它还为应用程序提供查询接口。
MetaManager: Edged 端和 Edgehub 端之间的消息处理器。它还负责将元数据存储到轻量级数据库(SQLite)或从轻量级数据库(SQLite)检索元数据。

KubeEdge架构图如下:
001

提示:更多介绍参考官方文档:为什么选择KubeEdge

KubeEdge部署

部署依赖

KubeEdge基于原生Kubernetes基础上构建,将Kubernetes能力从云端延伸到边缘,并使其适配边缘计算的要求,比如网络不稳定性以及资源受限场景等,因此在部署KubeEdge前,请先准备好一个Kubernetes集群。有关 Kubernetes 的部署可参考: 附042.Kubernetes_v1.32.3生成环境高可用部署

提示:Kubernetes 和 KubeEdge 版本匹配和兼容可查看: Kubernetes compatibility

对于容器运行时,可支持如下:

  • docker
  • containerd
  • cri-o
  • virtlet

部署规划

本方案基于 Keadm 部署工具实现完整生产环境可用的 KubeEdge 边缘云部署。
其主要信息如下:

  • 版本:KubeEdge v1.20.0 版本;
  • Keadm:采用 Keadm 部署 KubeEdge ;
  • OS:Ubuntu Server 24.04 LTS;
  • containerd:容器运行时。
节点主机名 IP 类型 备注
master01 172.24.8.181 Kubernetes master节点 KubeEdge Cloud节点
master02 172.24.8.182 Kubernetes master节点 KubeEdge Cloud节点
master03 172.24.8.183 Kubernetes master节点 KubeEdge Cloud节点
worker01 172.24.8.184 Kubernetes worker节点
worker02 172.24.8.185 Kubernetes worker节点
worker03 172.24.8.186 Kubernetes worker节点
worker03 172.24.8.186 Kubernetes worker节点
edgenode01 172.24.8.187 KubeEdge worker节点
edgenode02 172.24.8.188 KubeEdge worker节点

提示:Kubernetes 集群部署不在本方案讨论内,但本方案基于快速部署目的,会使用 Kubernetes 的 master01 充当部署节点,从而快速批量完成对edgenode节点的相关部署。

主机名配置

需要对所有节点主机名进行相应配置。

root@localhost:~# hostnamectl set-hostname edgenode01	    #其他节点依次修改

提示:如上需要在所有节点修改对应的主机名。

生产环境通常建议在内网部署dns服务器,使用dns服务器进行解析,本指南采用本地hosts文件名进行解析。
如下hosts文件修改仅需在master01执行,后续使用批量分发至其他所有节点。

root@master01:~# cat >> /etc/hosts << EOF
172.24.8.187 edgenode01
172.24.8.188 edgenode02
EOF

root@master01:~# cat /etc/hosts
#……
172.24.8.181 master01
172.24.8.182 master02
172.24.8.183 master03
172.24.8.184 worker01
172.24.8.185 worker02
172.24.8.186 worker03
172.24.8.187 edgenode01
172.24.8.188 edgenode02

提示:如上仅需在master01节点上操作。

变量准备

为实现自动化部署,自动化分发相关文件,提前定义相关主机名、IP组、变量等。

root@master01:~# wget http://down.linuxsb.com/mydeploy/kubeedge/v1.20.0/kubeedgenodeenv.sh

root@master01:~# vi kubeedgenodeenv.sh            #确认相关主机名和IP
#!/bin/bash
#***************************************************************#
# ScriptName: kubeedgenodeenv.sh
# Author: xhy
# Create Date: 2025-04-01 16:12
# Modify Author: xhy
# Modify Date: 2025-04-01 16:15
# Version: v1
#***************************************************************#

# Kubernetes 集群 MASTER 机器 IP 数组
export K8S_MASTER_IPS=(172.24.8.181 172.24.8.182 172.24.8.183)

# Kubernetes 集群 MASTER IP 对应的主机名数组
export K8S_MASTER_NAMES=(master01 master02 master03)

# Kubernetes 集群 NODE 机器 IP 数组
export K8S_NODE_IPS=(172.24.8.184 172.24.8.185 172.24.8.186)

# Kubernetes 集群 NODE IP 对应的主机名数组
export K8S_NODE_NAMES=(worker01 worker02 worker03)

# Kubernetes 集群 所有机器 IP 数组
export K8S_ALL_IPS=(172.24.8.181 172.24.8.182 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

木二_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值