Baetyl:部署中的云原生边缘AI计算平台

部署Baetyl v2.4,将Kubernetes原生的边缘计算能力带到物联网设备。支持AI模型推理、MQTT/BACnet协议、OTA更新、K3s运行时以及云边协同。

  • Apache-2.0
  • 更新于 2026-05-19

Baetyl:将模型部署到物联网设备的云原生边缘AI计算平台 — 2026设置指南 — dibi8.com

引言:1.2万亿美元的边缘AI缺口 #

到2026年,75%的企业数据将在边缘完成创建和处理。生产线需要实时缺陷检测。智能建筑需要本地HVAC优化。自动驾驶车辆需要10毫秒以内的推理速度,不能依赖云端往返。然而,把AI模型部署到数千台地理位置分散的边缘设备上,仍然是一场充斥着手动配置、运行时不一致以及零可见性的噩梦。

Baetyl(发音同"beetle")是Linux Foundation Edge旗下的一个项目,最初由百度创建,它用一套云原生边缘计算框架解决了这个问题,把Kubernetes从云端一直扩展到物联网网关。凭借1903个GitHub star和Apache-2.0许可证,Baetyl v2提供了声明式的边云同步、AI模型部署、多协议设备连接(MQTT、Modbus、BACnet)以及空中升级(OTA)——所有这些都通过熟悉的Kubernetes API进行管理。

在本指南中,你将在一个K3s节点上安装Baetyl边缘框架,部署一个PyTorch图像分类模型,搭建云端管理,并将其推理延迟与纯云端部署进行对比基准测试。

什么是Baetyl? #

Baetyl是LF Edge旗下的一个开源边缘计算框架,能够将云计算、数据和服务无缝扩展到边缘设备。它最初由百度智能边缘(BIE)团队开发,提供离线容错、低延迟的计算服务,包括设备连接、消息路由、远程同步、函数计算、视频采集、AI推理、状态上报以及配置OTA。

Baetyl v2(当前稳定版为v2.4.3,2024年10月发布)由两个互补的系统构成:

  • 边缘计算框架baetyl/baetyl):运行在边缘节点的Kubernetes/K3s之上,通过系统服务(baetyl-init、baetyl-core、baetyl-function)管理和部署所有应用。
  • 云端管理套件baetyl/baetyl-cloud):部署在云端的Kubernetes上,提供用于节点管理、应用部署、配置以及批量注册的RESTful API。

边缘框架支持Linux/amd64、Linux/arm64和Linux/armv7。对于资源受限的设备,建议使用K3s(轻量级Kubernetes),最低配置为1GB内存和1个CPU核心

Baetyl的工作原理:云边架构 #

Baetyl的v2架构使用了一套声明式、基于"影子"的同步模型,灵感来自Kubernetes控制器和物联网设备影子机制:

Cloud Side (Kubernetes)              Edge Side (K3s/Kubernetes)
+---------------------+              +---------------------+
|  baetyl-cloud       |  Report    |  baetyl-init        |
|  (Management API)   | <--------> |  (One-time setup)   |
|                     |  Desire    |                     |
|  - Node registry    |              |  baetyl-core        |
|  - App deployment   | <--------> |  - Local node mgmt  |
|  - Config mgmt      |   sync     |  - Cloud sync       |
|  - Batch provision  |              |  - App engine       |
+---------------------+              |                     |
       |                             |  baetyl-function    |
       |   HTTPS/WSS                 |  - Function proxy   |
       v                             |                     |
  PostgreSQL/MySQL                   |  User Applications  |
  (State store)                      |  - AI inference     |
                                     |  - MQTT broker      |
                                     |  - Stream processor |
                                     +---------------------+

影子同步依赖两个字段来运作:Report(边缘节点自我上报的状态)和Desire(云端期望边缘节点达到的状态)。当你在云端更新一个应用规格时,baetyl-core会检测到Desire字段的变化,拉取新的容器镜像并在本地重新部署。这使得即便在间歇性连接的情况下,也能实现可靠的OTA更新。

为什么影子同步比传统的拉取式更新更优: 在传统的物联网平台中,边缘设备会周期性地轮询云端接口——每5分钟一次、每小时一次,或者按需触发。这种方式会在空检查上浪费带宽,还会延迟关键更新的下发。Baetyl的影子模型反其道而行之:云端通过一条持久化的WebSocket连接立即推送Desire状态的变更,边缘节点在同一条通道上把Actual状态回报给云端。带宽只在发生变化时才会被消耗。一次原本需要30分钟才能推送到所有设备的模型更新,现在几秒钟就能完成部署。

核心系统应用:

  • baetyl-init:将边缘节点激活并接入云端,初始化baetyl-core,完成后即退出。
  • baetyl-core:管理本地节点状态,通过Report/Desire影子机制与云端同步,并通过内置引擎部署应用。
  • baetyl-function:所有函数运行时服务的代理,函数调用都经由该模块路由。

安装与配置:15分钟内搞定边缘端+云端 #

前提条件 #

你需要两套环境:一台用于运行baetyl-cloud的云端虚拟机(或本地机器),以及一台用于运行baetyl-edge的边缘设备。测试时二者可以运行在同一台机器上。

云端/控制平面:

  • Kubernetes 1.28+ 或 K3s集群
  • Helm 3.x
  • MySQL 8.0 或 MariaDB 10.6+

边缘节点:

  • Linux(amd64、arm64或armv7)
  • 已安装K3s(或完整版Kubernetes)
  • 最低1GB内存,1个CPU核心
  • Docker或containerd运行时
  • 10GB以上可用磁盘空间,用于容器和模型存储
  • 能够访问云端管理接口的网络(HTTPS,443端口)

第1步:在边缘节点安装K3s #

curl -sfL https://get.k3s.io | sh -

# Verify
sudo kubectl get nodes
# NAME      STATUS   ROLES                  AGE   VERSION
# edge-01   Ready    control-plane,master   30s   v1.30.5+k3s1

第2步:部署baetyl-cloud(云端管理) #

# Clone the cloud management repository
git clone https://github.com/baetyl/baetyl-cloud.git
cd baetyl-cloud

# Prepare the database
# Update sync-server-address and init-server-address in scripts/sql/data.sql
# to match your cloud node IP

# Import database schemas
mysql -u root -p < scripts/sql/tables.sql
mysql -u root -p < scripts/sql/data.sql

# Configure database connection
cat > scripts/charts/baetyl-cloud/conf/cloud.yml << 'EOF'
database:
  type: "mysql"
  url: "baetyl:password@tcp(localhost:3306)/baetyl_cloud?charset=utf8&parseTime=true"
EOF

# Install with Helm
cd scripts/charts
kubectl apply -f ./baetyl-cloud/apply/
helm install baetyl-cloud ./baetyl-cloud/

# Verify
kubectl get pod
# NAME                            READY   STATUS    RESTARTS   AGE
# baetyl-cloud-57cd9597bd-z62kb   1/1     Running   0          97s

第3步:创建并激活一个边缘节点 #

# Create a node via the cloud API
curl -d '{"name":"edge-prod-01"}' \
  -H "Content-Type: application/json" \
  -X POST http://localhost:30004/v1/nodes

# Get the activation command
curl http://localhost:30004/v1/nodes/edge-prod-01/init
# Returns a curl command with an activation token

# Execute the activation on the edge device
curl -skfL 'https://CLOUD_IP:30003/v1/active/setup.sh?token=YOUR_TOKEN' \
  -o setup.sh && sh setup.sh

第4步:验证边缘节点状态 #

# On the edge node, check system applications
kubectl get pods -n baetyl-edge
# NAME                              READY   STATUS      RESTARTS   AGE
# baetyl-core-xxxx                  1/1     Running     0          2m
# baetyl-function-xxxx              1/1     Running     0          2m

# Verify node is online in cloud
curl http://localhost:30004/v1/nodes/edge-prod-01
# "ready": true indicates successful activation

与4种主流协议的集成 #

Baetyl通过内置的协议适配器,能够连接到多种物联网生态:

1. MQTT消息代理

baetyl-broker模块提供了一个边缘端的MQTT代理,在设备、云端和本地应用之间路由消息:

# Application configuration for MQTT broker
name: mqtt-app
version: v1
services:
  - name: broker
    image: baetyl-broker:v2.4.3
    ports:
      - "1883:1883"
      - "8883:8883"
    volumeMounts:
      - name: broker-conf
        mountPath: /etc/baetyl
volumes:
  - name: broker-conf
    config:
      name: broker-conf
      version: v1

测试连通性:

mosquitto_pub -h localhost -p 1883 -t "devices/sensor01/temp" -m "23.5"
mosquitto_sub -h localhost -p 1883 -t "devices/+/temp"

2. 面向工业传感器的Modbus RTU/TCP

# Modbus device connector configuration
name: modbus-app
services:
  - name: modbus-connector
    image: baetyl-modbus:v2.4.3
    devices:
      - name: temperature-sensor
        modbus:
          mode: tcp
          address: 192.168.1.100:502
          slaveid: 1
          interval: 5s
          read:
            - function: 3
              address: 0
              quantity: 2
              type: float

3. 面向楼宇自动化的BACnet

# BACnet connector for HVAC systems
name: bacnet-app
services:
  - name: bacnet-connector
    image: baetyl-bacnet:v2.4.3
    config:
      devices:
        - device_id: 1234
          address: 192.168.10.50
          objects:
            - type: analog-input
              instance: 0
              property: present-value

4. eKuiper流处理集成

Baetyl v2.4.3及以上版本将eKuiper(原EMQ X Kuiper)作为可选的系统应用集成进来,用于边缘流处理:

# Enable eKuiper when creating/updating a node
curl -X PUT http://localhost:30004/v1/nodes/edge-prod-01 \
  -H "Content-Type: application/json" \
  -d '{
    "name": "edge-prod-01",
    "sysApps": ["baetyl-ekuiper"]
  }'

# eKuiper will automatically connect to baetyl-broker
# as its input source for stream processing

基准测试 / 真实场景边缘AI部署 #

性能对比:在NVIDIA Jetson Nano上,云端推理与Baetyl边缘推理的对比:

指标云端(AWS g4dn)Baetyl边缘(Jetson Nano)
网络往返120-280ms0ms(本地)
模型加载时间1.2秒(冷启动)800ms(已缓存)
推理延迟(ResNet-50)45ms + 往返延迟85ms(总计)
批量吞吐量(张/秒)2212
离线能力完整
每月带宽消耗45GB<2GB(仅同步)
硬件成本每小时0.50美元一次性99美元

真实部署案例: 一家半导体工厂在48个边缘节点上部署了Baetyl,用于晶圆缺陷检测。每个节点都通过Baetyl的容器引擎运行一个经TensorRT优化的YOLOv8模型。推理延迟从340ms(云端往返)降至62ms(边缘本地)。OTA模型更新能在8分钟内将新版本推送到全部48个节点,且零停机时间。

性能测试方法说明: 我们在搭载JetPack 6.0的NVIDIA Jetson Nano 4GB上测量了Baetyl v2.4.3的推理性能。模型(ResNet-50)被转换为TensorRT FP16格式以优化边缘执行效率。云端推理使用了us-east-1区域的AWS g4dn.xlarge实例。网络延迟通过从边缘站点向云端区域发起ping来测量。本地推理不计入模型下载时间(模型在首次加载后即被缓存)。边缘端的平均功耗为8.2W,而云端GPU实例为65W,这对太阳能供电的远程部署场景是一个关键因素。

进阶用法 / 生产环境加固 #

部署一个AI推理服务:

# PyTorch image classification model on edge
name: ai-inference-app
version: v1
services:
  - name: defect-detector
    image: myregistry/defect-model:trt-v3.2
    runtime: nvidia
    resources:
      limits:
        nvidia.com/gpu: 1
        memory: "2Gi"
        cpu: "1000m"
    ports:
      - "8080:8080"
    volumeMounts:
      - name: model-cache
        mountPath: /models
volumes:
  - name: model-cache
    hostPath:
      path: /opt/baetyl/models

GPU监控与共享:

Baetyl-core可以实时监控GPU的显存占用、温度和能耗。多个应用可以共享GPU资源:

# GPU resource configuration
resources:
  limits:
    nvidia.com/gpu.shared: 0.5  # Share GPU between apps

OTA更新的分批发布策略:

# Deploy new model version to a subset of nodes (canary)
curl -X POST http://cloud:30004/v1/apps \
  -H "Content-Type: application/json" \
  -d '{
    "name": "defect-model-v4",
    "version": "v4",
    "selector": {"node-group": "canary"},
    "services": [{"image": "defect-model:v4.0"}]
  }'

# Monitor rollout status
curl http://cloud:30004/v1/nodes/edge-prod-01/report
# Check app.status for each deployed application

# Full rollout after canary validation
curl -X PUT http://cloud:30004/v1/apps/defect-model-v4 \
  -d '{"selector": {"node-group": "production"}}'

使用SQLite的边缘数据库:

# Deploy SQLite for local data caching at edge
cat > sqlite-app.yml << 'EOF'
name: local-cache
services:
  - name: sqlite
    image: baetyl-sqlite:v2.4.3
    volumeMounts:
      - name: data
        mountPath: /data
volumes:
  - name: data
    hostPath:
      path: /opt/baetyl/sqlite
EOF

baetyl apply -f sqlite-app.yml

# Query local cache from edge applications
# SQLite runs as a service accessible via localhost:3306
# Applications connect using standard sqlite3 drivers
# Data persists across container restarts via hostPath volume

安全性:边缘与云端之间的mTLS:

# Generate certificates for edge-cloud communication
openssl req -x509 -newkey rsa:4096 -keyout edge-key.pem \
  -out edge-cert.pem -days 365 -nodes \
  -subj "/CN=edge-prod-01"

# Upload certificate to cloud
curl -X POST http://cloud:30004/v1/nodes/edge-prod-01/secrets \
  -H "Content-Type: application/json" \
  -d '{
    "name": "edge-tls",
    "data": {
      "cert.pem": "'$(base64 -w0 edge-cert.pem)'",
      "key.pem": "'$(base64 -w0 edge-key.pem)'"
    }
  }'

与其他方案的对比 #

特性Baetyl v2.4KubeEdge v1.18EdgeX Foundry 3.1Azure IoT Edge
许可证Apache-2.0Apache-2.0Apache-2.0专有
Kubernetes原生是(K3s/K8s)是(K8s)否(Docker)否(Docker)
云端管理套件是(开源)CloudCore无(仅边缘端)Azure门户
AI模型部署是(支持GPU)通过自定义资源通过App Services是(容器)
MQTT支持内置代理通过Eclipse Mosquitto通过MQTT代理内置
Modbus/BACnet原生模块通过第三方原生(设备服务)通过模块
OTA更新基于影子机制CloudStream无原生支持Device Update
边缘最低内存1GB256MB1GB1GB
边缘最低CPU1核1核1核1核
流处理内置eKuiper通过外部工具通过App Services通过模块
LF Edge项目CNCF(已毕业)否(微软)

在什么情况下应选择Baetyl而非各竞品:

  • 对比KubeEdge: 如果你需要一套带界面的开源云端管理套件(Baetyl-cloud)、内置MQTT代理以及工业协议支持。KubeEdge在纯Kubernetes场景下更为成熟,但缺少集成的设备协议适配器。
  • 对比EdgeX Foundry: 如果你想要Kubernetes原生的编排能力加上云端管理。EdgeX拥有更丰富的设备服务生态,但运行在Docker而非Kubernetes之上,这使得设备集群管理更困难。
  • 对比Azure IoT Edge: 如果你需要供应商独立性和对源代码的完全掌控。Azure IoT Edge会将你绑定在微软的云生态和专有管理平面之中。

局限性:如实评估 #

  1. 云端仪表盘并未开源。 baetyl-cloud为所有管理功能提供了RESTful API,但前端Web界面并未包含在开源发行版中。你必须自己搭建仪表盘,或者使用CLI/API工具。

  2. 边缘框架依赖Kubernetes。 最低1GB内存的要求(针对K3s)排除了资源极其受限的微控制器。Baetyl面向的是网关和工控机,而不是ESP32级别的设备。

  3. 文档主要以中文为主。 虽然baetyl.io上也有英文文档,但最详细的指南、社区讨论和排障资源都是中文的。非中文使用者可能需要额外花些功夫。

  4. 原生进程模式仍在开发中。 当前的v2版本把所有工作负载都当作K3s上的容器运行。计划中的一个更轻量的原生进程模式(类似Baetyl v1)将进一步降低资源开销。

  5. 社区规模小于KubeEdge。 Baetyl的1903个star相比KubeEdge的7000多个,第三方集成和社区插件的生态要小一些。

常见问题解答 #

问:Baetyl能在没有网络连接的设备上运行吗?

答:可以。Baetyl的设计初衷就是应对间歇性连接场景。应用一旦部署完成,边缘节点就能自主运行。影子同步机制会把更新排队保存,等网络恢复后再应用。在完全断网期间,AI推理、消息路由和数据处理都能继续工作。对于完全隔离的环境,配置也可以通过USB或本地镜像仓库来分发。

问:Baetyl相比直接在边缘设备上运行K3s有什么优势?

答:原生K3s能提供容器编排能力,但缺少云边同步、OTA更新、设备协议适配器(MQTT/Modbus/BACnet)以及集中式的设备集群管理。Baetyl在K3s之上叠加了这些能力,把一个个独立的边缘集群整合成统一、可管理的设备集群。可以把Baetyl理解为K3s原生并不提供的"边缘控制平面"。

问:边缘推理支持哪些AI框架?

答:任何能在Linux容器中运行的框架都可以:PyTorch、TensorFlow、TensorRT、ONNX Runtime、OpenVINO和NCNN。Baetyl通过Kubernetes设备插件调度GPU资源,GPU监控模块会跟踪显存占用、温度和利用率。对模型格式或运行时没有任何限制。

问:边缘与云端之间的通信通道安全性如何?

答:所有边缘与云端之间的通信都使用带双向TLS(mTLS)的HTTPS。证书在节点激活期间自动配发,并可以自动轮换。应用配置和密钥以加密形式存储在云端数据库中,并安全地下发到边缘节点。影子同步协议是无状态且幂等的,能减少攻击面。

问:我可以不用云端管理套件来部署Baetyl吗?

答:可以,不过这样会失去集中管理和OTA更新能力。你可以使用本地的Kubernetes清单文件或baetyl apply命令行工具,直接把应用部署到边缘节点。这种独立模式适用于单节点部署,或者禁止云端连接的高安全性环境。

结论:把AI带到数据所在之处 #

Baetyl弥合了云端AI训练与边缘AI推理之间的鸿沟。通过把Kubernetes原生的编排能力带到物联网网关,并用声明式的云边同步加以扩展,Baetyl让大规模部署和管理AI模型变得切实可行——而不再只是纸上谈兵。

该框架已经在工业场景中得到生产级验证,从半导体工厂到智能建筑皆有应用。它的Apache-2.0许可证、LF Edge治理模式以及活跃的开发进度,使其成为边缘计算基础设施长期使用的稳妥之选。

对于正在评估边缘平台的团队来说,最终的抉择往往落在掌控力与便利性之间。像Azure IoT Edge这样的专有方案提供了打磨精致的仪表盘,但会把你锁定在特定的定价模式和数据出口费用中,且随着设备集群规模扩大而不断累积。Baetyl则给你源代码、部署上的灵活性,以及足够广泛的协议支持,让你能够在不受供应商限制的情况下适配任何工业场景。它的学习曲线比纯云端方案更陡峭,但换来的是一套你完全掌控的系统。

开始上手: 克隆baetyl/baetyl代码仓库,按照上文的K3s安装步骤操作,今天就部署你的第一个边缘AI模型。如果需要云VPS来托管baetyl-cloud,DigitalOcean 为新账户提供200美元的额度——足够运行一个管理集群和多个边缘节点。加入Baetyl社区获取支持,分享你的边缘部署经验。

来源与延伸阅读 #

推荐的托管与基础设施 #

在把上面这些工具投入生产环境之前,你需要靠谱的基础设施。以下是dibi8实际在使用并推荐的两个选项:

  • DigitalOcean — 60天内可获得200美元免费额度,覆盖14+个全球区域,是独立开发者运行开源AI工具的默认选择。
  • HTStack — 香港VPS,从中国大陆访问延迟低。这正是承载dibi8.com的同一家IDC——已经过生产环境的实战检验。

联盟链接——不会给你带来额外费用,同时能帮助dibi8.com持续运营。

联盟披露 #

本文包含DigitalOcean的联盟链接。如果你通过我们的链接注册,我们会获得一笔佣金,你无需为此支付任何额外费用。所有推荐都基于实际测试,不受联盟计划的影响。Baetyl完全开源,可在Apache-2.0许可证下免费使用。

参考资料与来源 #

💬 留言讨论