边缘新生: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-

相关推荐
NAGNIP9 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab11 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab11 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP14 小时前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年14 小时前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼15 小时前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS15 小时前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区16 小时前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈16 小时前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang17 小时前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx