引言:当算力从"云端"走向"身边"
我们正处在一个"万物互联"的时代。从智能摄像头、工业机械臂到自动驾驶汽车,海量的设备正在世界的各个角落产生着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 -a 和 cat /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 -m 和 df -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 可以清晰地看到容器的输出。在整个过程中,我持续监控 top,isulad 守护进程本身的资源消耗非常低。这证明 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。bashsudo 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-mosquittoPod 已经成功Running,并且被精准地调度到了openeuler-edge节点上。 -
边缘验证(最终证明): 现在,我们 SSH 登录到那台轻量级的边缘 节点,执行
isula ps命令,看看 iSula 到底在干什么。
我还测试了离线自治 :我断开了边缘节点的网络,edge-mosquitto 容器依然在本地稳定运行,服务不中断。这就是 KubeEdge 赋予 openEuler 的边缘自治能力。

总结:从"云"到"边",openEuler 的无限可能
这次从零到一的边缘计算实战评测,让我对 openEuler 有了全新的、颠覆性的认识。它早已不是一个单纯的服务器操作系统,而是一个真正具备"云-边-端"全场景覆盖能力的"数字基础设施底座"。
- 极致的轻量化与定制能力 :通过
openeuler-imgen等工具,openEuler 可以被裁剪到 60MB 内存的极致轻量级,完美适配资源受限的边缘设备。 - 原生的边缘容器引擎:iSula 以其"轻、快、简"的特性,在边缘场景中相比传统 Docker 优势明显,提供了更低的资源开销和更快的启动速度。
- 无缝的云边协同生态:openEuler 与 KubeEdge 等 CNCF 主流边缘框架深度融合,让开发者可以无缝地将云原生的编排能力延伸至边缘,实现应用的统一、高效管理。
- 统一的 OS验 :最重要的一点是,openEuler 实现了从云(服务器版)到边(嵌入式/定制版)的 OS构统一。这意味着开发者可以在云端和边缘使用相同的工具链、相同的API、相同的运维体验,极大地降低了边缘应用的开发和维护复杂度。
这次评测,我真切地感受到了 openEuler 社区在边缘计算领域的深厚积累和前瞻布局。它不仅"能用",而且"非常好用"。对于任何希望在 5G、物联网、工业互联网领域布局的企业和开发者来说,openEuler 都是一个不容忽视的、强大而可靠的边缘技术基石。
-End-