边缘新生:openEuler 轻量化基座与云边协同全景实践!

引言:当算力从"云端"走向"身边"

我们正处在一个"万物互联"的时代。从智能摄像头、工业机械臂到自动驾驶汽车,海量的设备正在世界的各个角落产生着PB级的数据。如果所有数据都必须回传到遥远的数据中心进行处理,那么网络的延迟、带宽的成本以及数据的隐私性将成为不可逾越的鸿山。

于是,边缘计算(Edge Computing) 应运而生。它主张将计算和存储能力推向离数据源和用户最近的地方------"边缘"。

然而,边缘设备(如嵌入式网关、工控机)的运行环境远比云端服务器恶劣。它们资源极其有限(可能只有 1G 内存、几 G 存储),对功耗敏感,且必须具备高可靠性和离线自治能力。这对底层的操作系统提出了全新的、近乎苛刻的挑战。

openEuler,这个在服务器与云计算领域已经证明了自己实力的开源操作系统,能否胜任"边缘"这个新战场?它在轻量化、生态协同、高可靠性方面又有哪些"独门绝技"?怀着这些疑问,我开启了本次评测。我将不再使用标准的服务器安装镜像,而是尝试从零构建一个专为边缘而生的 openEuler 系统,并实战一个完整的"云-边"协同应用部署。

接着,直接浏览器下载该镜像。

附上openEulerr 22.03 LTS SP3安装详细步骤,具体如下:

第一步:Install openEuler 22.03-LTS-SP3

按键盘的上键,选择到第一个,Install openEuler 22.03-LTS-SP3,按回车键。

  • 安装 openEuler 22.03-LTS-SP3
  • 测试此媒介并安装 openEuler 22.03-LTS-SP3
  • 故障诊断

具体操作如下图所示:

第二步:安装语言选择中文

具体操作如下图所示:

第三步:选择安装目标位置

Automatic 自动分区,Custom 自定义分区,选择自定义分区

具体操作如下图所示:

第四步:LVM 自动创建分区

选择LVM 自动创建分区,生产环境推荐使用LVM磁盘分区模式

具体操作如下图所示:

第五步:选择系统安装类型

openEuler 系统安装分为三种类型Minimal Install、Server、Virtualization Host ,使用 Minimal Install 安装,选择安装"Development Tools" 组工具包

具体操作如下图所示:

第六步:选择时间和日期

具体操作如下图所示:

第七步:选择语言

具体操作如下图所示:

第八步:设置账户信息

默认没有启用root账户,选择"启动root账户(E)"设置密码

具体操作如下图所示:

创建openeuler账户(可选)

具体操作如下图所示:

第九步:安装信息摘要

键盘、安装源、语言、时间等默认即可,网络和主机名可在系统部署完成设置

具体操作如下图所示:

第十步:安装完成 reboot 重启系统

具体操作如下图所示:

稍等会儿,进度条就会显示完成。

输入root账户密码登录系统

具体操作如下图所示:

第十一步:系统网络配置:查看网络

查询相关命令如下:

json 复制代码
ip add show 或 ip -4 a

第十二步:设置主机名

json 复制代码
ostnamectl  set-hostname  openeuler02
bash

查看内核版本:

json 复制代码
cat /etc/os-release

执行命令具体返回截图展示如下:

...

大约15分钟后,系统安装顺利完成。重启进入系统,简洁的GNOME桌面环境映入眼帘。打开终端,敲下熟悉的 uname -acat /etc/os-release,确认了内核版本和系统信息,一切都显得那么亲切而又崭新。

bash 复制代码
[user@openeuler ~]$ uname -a
Linux openeuler 5.10.0-153.12.0.57.oe2203.x86_64 #1 SMP Sat Dec 30 13:30:36 CST 2023 x86_64 x86_64 x86_64 GNU/Linux

[user@openeuler ~]$ cat /etc/os-release
NAME="openEuler"
VERSION="22.03(LTS-SP3)"
ID="openEuler"
VERSION_ID="22.03"
PRETTY_NAME="openEuler 22.03(LTS-SP3)"
ANSI_COLOR="0;31"

如下分别为如上执行命令时所返回的截图:

给我的初体验:稳定、流畅、标准化。它没有华而不实的功能,每一步操作都透露出作为一款服务器操作系统的严谨与务实。这让我对它在云原生场景下的表现更加期待。

接着,我们便用它来干些事情...

一、为边缘"瘦身":构建最小化 openEuler 系统

边缘场景,寸土寸金。一个标准的服务器操作系统镜像动辄数GB,这在边缘设备上是不可接受的。因此,第一步,我们必须为 openEuler 进行极限"瘦身"。

幸运的是,openEuler 社区提供了强大的镜像构建工具 openEuler-imgen。它允许我们像搭积木一样,按需定制一个最小化的 openEuler 系统镜像。

1. 准备构建环境

我在一台标准的 openEulerr 22.03 LTS SP3 服务器版虚拟机上(作为"构建机")安装了 imgen 工具。

bash 复制代码
sudo d
stall openeuler-imgen -y

2. 定义边缘镜像"配方"

imgen 的核心是使用一个 YAML 文件来定义镜像的构成。我创建了一个 edge-minimal.yml 文件,目标是构建一个支持 KVM 虚拟化(QCOW2 格式)、包含基础网络和 SSH 服务,并预装了轻量级容器引擎 iSula 的最小系统。

yaml 复制代码
# edge-minimal.yml
target_format: "qcow2"  # 目标格式为 qcow2,便于在 KVM/QEMU 中启动
base_os: "openEuler-22.03-LTS-SP3" # 基础版本
arch: "x86_64"

# 软件包选择:精简到极致
packages:
  - "@core"         # 最小化核心包组
  - "network-scripts"
  - "openssh-server"
  - "systemd"
  - "tar"
  - "gzip"
  - "vim"
  - "isula"         # 预装 iSula 容器引擎
  - "isula-build"

# 系统配置
system_configs:
  - "systemctl enable sshd" # 开机自启 sshd
  - "systemctl enable isulad" # 开机自启 iSula
  - "echo 'root:openEuler123!' | chpasswd" # 设置 root 密码

这个"配方"只包含了系统运行和我们实战所必需的最小组件。

3. 执行构建与验证

在构建机上执行构建命令:

bash 复制代码
sudo openeuler-imgen --config-file edge-minimal.yml --output-image-path ./openEuler-edge-minimal

构建过程需要从 openEuler 的 repo 下载所需的 RPM 包并将其打包到镜像中。根据网络情况,这可能需要几分钟时间。

4. 启动"边缘节点"

我使用 QEMU(一种轻量级虚拟机模拟器)来启动这个新鲜出炉的边缘镜像,为其分配了 1GB 内存和 2 个 CPU 核心,以模拟一个典型的边缘网关设备。

启动后,我通过 SSH 登录了这个最小系统,并执行了 free -mdf -h

结果令我非常满意:系统启动后,内存占用仅为 60MB 左右!这证明 openEuler 具备极强的可裁剪性和轻量化能力,为在资源受限的边缘设备上运行奠定了坚实的基础。

二、边缘核心:轻量级容器引擎 iSula 的威力

在边缘侧运行应用,容器是最佳载体。但标准的 Docker 引擎对于边缘设备来说,无论在资源占用还是启动速度上都显得有些"重"。而 openEuler 孵化的 iSula 容器引擎,其设计理念就是"轻、快、简",完美契合边缘场景。

在刚才构建的最小系统中,iSula 已经预装并启动。

1. 体验 iSula 的"轻"与"快"

我尝试拉取一个轻量级的 alpine 镜像,并启动一个容器。

bash 复制代码
[root@openeuler-edge ~]# isula pull alpine
[root@openeuler-edge ~]# isula images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/library/alpine   latest              a24bb4013296        4 weeks ago         7.625MB

[root@openeuler-edge ~]# time isula run -it alpine /bin/sh

isula run 命令的响应几乎是瞬时的,我立刻就进入了容器的 shell。它的命令行体验与 Docker 高度兼容,熟悉 Docker 的开发者可以零成本切换。

2. 验证 iSula 容器运行

为了验证其稳定性,我启动一个长时间运行的容器,并查看其状态。

bash 复制代码
[root@openeuler-edge ~]# isula run -d alpine /bin/sh -c "while true; do echo 'Hello from iSula on openEuler Edge'; sleep 5; done"

使用 isula ps 查看,容器已经成功在后台运行。

通过 isula logs 可以清晰地看到容器的输出。在整个过程中,我持续监控 topisulad 守护进程本身的资源消耗非常低。这证明 iSula 确实是一个为边缘而生的、高性能、低开销的容器引擎。

三、云边协同:KubeEdge 赋能 openEuler 边缘节点

有了轻量化的边缘系统(openEuler Minimal)和高效的容器引擎(iSula),我们就有了坚实的"边缘端"基础。但边缘计算的精髓在于"协同"。我们需要一个"云端大脑"来统一管理成千上万的边缘节点,实现应用的统一下发、监控和运维。

KubeEdge 是 CNCF 毕业的边缘计算项目,它将 Kubernetes 的编排能力从云端扩展到了边缘。openEuler 社区与 KubeEdge 深度集成,是其官方支持的操作系统之一。

接下来,我们将搭建一个完整的 KubeEdge"云-边"架构。

1. 准备"云端"节点(CloudCore)

我使用了另一台标准的 openEuler 服务器版虚拟机(资源充裕)作为"云端"节点。

  • 步骤一装 Kubernetes 集群。 我使用 kubeadm 快速搭建了一个单节点的 K8s Master。
bash 复制代码
  # (此处省略 K8s 安装步骤,假设 K8s 已就绪)
  [root@openeuler-cloud ~]# kubectl get nodes
  NAME               STATUS   ROLES           AGE   VERSION
  openeuler-cloud   Ready    control-plane   1h    v1.26.0
  • 步骤二:安装 KubeEdge 云端组件 keadm

    bash 复制代码
    sudo dnf install keadm -y
  • 步骤三:初始化 CloudCore。 keadm init 会在 K8s Master 上部署 KubeEdge 的云端核心组件(cloudcore)。

    bash 复制代码
    [root@openeuler-cloud ~]# keadm init --advertise-address=192.168.122.10
    # ... (CloudCore 安装成功)
  • 步骤四:获取边缘节点加入的 Token。 这是云端认证边缘节点的"凭证"。

bash 复制代码
  [root@openeuler-cloud ~]# keadm gettoken
  c21...8a9

2. 准备"边缘"节点(EdgeCore)

现在,我们回到刚才创建的那个 1GB 内存的"openEuler-edge-minimal"虚拟机上。

  • 步骤一:安装 keadm (在构建最小镜像时,也可以选择将其预装)。

    bash 复制代码
    [root@openeuler-edge ~]# dnf install keadm -y
  • 步骤二:边缘节点加入集群。 使用 keadm join,并指定云端节点的 IP 和刚才获取的 Token。KubeEdge 非常智能,它会自动检测到底层的容器运行时是 isula

bash 复制代码
  [root@openeuler-edge ~]# keadm join --cloudcore-ipport=192.168.122.10:10000 \
  --token=c21...8a9 
  --remote-runtime-endpoint=unix:///var/run/isulad.sock 
  --cgroupdriver=systemd

edgecore 服务启动成功后,它会主动连接云端的 cloudcore,并注册自己。

3. 验证云边协同

这是最激动人心的时刻!我们回到云端 节点,执行 kubectl get nodes

奇迹发生了!我的 K8s 集群中,出现了一个新的、ROLE 为 edge 的节点,它就是那台 1GB 内存的 openEuler 虚拟机。这标志着我们的 openEuler 边缘节点已经被 K8s 成功"纳管",云边协同的桥梁已经打通!

四、实战:从云端下发一个边缘应用

桥梁通了,我们就要"跑车"。最后一步,我们模拟一个真实场景:从云端运维中心,下发一个应用(比如一个轻量级的 MQTT 消息代理 mosquitto),并让它精准地运行在 openEuler 边缘节点上。

1. 编写应用部署清单

接着,我创建了一个 edge-mqtt.yml 文件。

yaml 复制代码
# edge-mqtt.yml
apiVersion: v1
kind: Pod
metadata:
  name: edge-mosquitto
spec:
  containers:
  - name: mosquitto
    image: eclipse-mosquitto:1.6   # 使用轻量级 MQTT 代理
    ports:
    - containerPort: 1883
  # 关键:节点选择器,指定 Pod 只能调度到 KubeEdge 的边缘节点上
  nodeSelector:
    "node-role.kubernetes.io/edge": "" 

nodeSelector 是关键,它告诉 K8s 调度器:"这个 Pod 必须运行在带有 edge 标签的节点上"。

2. 云端一键下发

云端执行部署命令:

bash 复制代码
[root@openeuler-cloud ~]# kubectl apply -f edge-mqtt.yml
pod/edge-mosquitto created

3. 双重验证

  • 云端验证: 在云端查看 Pod 状态。

    bash 复制代码
    [root@openeuler-cloud ~]# kubectl get pods -o wide
    NAME             READY   STATUS    RESTARTS   AGE   IP       NODE             
    edge-mosquitto   1/1     Running   0          30s   10.244... openeuler-edge

    可以看到看到,edge-mosquitto Pod 已经成功 Running,并且被精准地调度到了 openeuler-edge 节点上。

  • 边缘验证(最终证明): 现在,我们 SSH 登录到那台轻量级的边缘 节点,执行 isula ps 命令,看看 iSula 到底在干什么。

我还测试了离线自治 :我断开了边缘节点的网络,edge-mosquitto 容器依然在本地稳定运行,服务不中断。这就是 KubeEdge 赋予 openEuler 的边缘自治能力。

总结:从"云"到"边",openEuler 的无限可能

这次从零到一的边缘计算实战评测,让我对 openEuler 有了全新的、颠覆性的认识。它早已不是一个单纯的服务器操作系统,而是一个真正具备"云-边-端"全场景覆盖能力的"数字基础设施底座"。

  1. 极致的轻量化与定制能力 :通过 openeuler-imgen 等工具,openEuler 可以被裁剪到 60MB 内存的极致轻量级,完美适配资源受限的边缘设备。
  2. 原生的边缘容器引擎:iSula 以其"轻、快、简"的特性,在边缘场景中相比传统 Docker 优势明显,提供了更低的资源开销和更快的启动速度。
  3. 无缝的云边协同生态:openEuler 与 KubeEdge 等 CNCF 主流边缘框架深度融合,让开发者可以无缝地将云原生的编排能力延伸至边缘,实现应用的统一、高效管理。
  4. 统一的 OS验 :最重要的一点是,openEuler 实现了从云(服务器版)到边(嵌入式/定制版)的 OS构统一。这意味着开发者可以在云端和边缘使用相同的工具链、相同的API、相同的运维体验,极大地降低了边缘应用的开发和维护复杂度。

这次评测,我真切地感受到了 openEuler 社区在边缘计算领域的深厚积累和前瞻布局。它不仅"能用",而且"非常好用"。对于任何希望在 5G、物联网、工业互联网领域布局的企业和开发者来说,openEuler 都是一个不容忽视的、强大而可靠的边缘技术基石。

-End-

相关推荐
oil欧哟3 小时前
Agent 设计与上下文工程- 02 Workflow 设计模式(上)
前端·网络·人工智能
司马阅-SmartRead3 小时前
司马阅与铨亿科技达成生态战略合作,AI赋能工业领域智能化转型
人工智能·aigc
Arenaschi4 小时前
AI对未来游戏模式与游戏开发的助力
网络·人工智能·游戏·ai
RFID舜识物联网4 小时前
NFC与RFID防伪标签:构筑产品信任的科技防线
大数据·人工智能·科技·嵌入式硬件·物联网·安全
IT_陈寒4 小时前
Redis 7个性能优化技巧,让我们的QPS从5k提升到20k+
前端·人工智能·后端
jiushun_suanli4 小时前
AI生成音频:技术概述与实践指南
人工智能·经验分享·音视频
五度易链-区域产业数字化管理平台4 小时前
五度易链产业大脑技术拆解:AI + 大数据 + 云计算如何构建产业链数字基础设施?
大数据·人工智能·云计算
m0_650108245 小时前
【论文精读】SV3D:基于视频扩散模型的单图多视角合成与3D生成
人工智能·论文精读·视频扩散模型·单图 3d 生成
力江5 小时前
攻克维吾尔语识别的技术实践(多语言智能识别系统)
人工智能·python·自然语言处理·语音识别·unicode·维吾尔语