K8s 边缘计算实录:基于 KubeEdge 的边缘节点轻量接入与云边协同
·
K8s 边缘计算实录:基于 KubeEdge 的边缘节点轻量接入与云边协同

随着物联网(IoT)、车载智能终端、5G 边缘基站与智能工厂边缘网关的爆发式普及,云原生技术的版图正迅速从“中心化数据中心”向“离散弱网的物理边缘现场(Edge Computing)”狂飙突进。
然而,传统的原生 Kubernetes 节点组件(kubelet)在直接部署到边缘轻量级设备(如 2GB 内存的工控机或树莓派)时,会遭遇三大致命水土不服:
- 内存开销过于沉重:原生
kubelet常驻内存消耗往往高达 300MB~500MB,几乎榨干了边缘小型设备的全部空闲算力; - 缺乏离线自治能力(Offline Autonomy):边缘节点通常处于公网 4G/5G 弱网或间歇性断网环境。原生 Kubernetes 一旦 5 分钟联系不上节点,中心控制面就会将该节点标记为
NotReady并强制驱逐迁移上面的所有业务 Pod; - 断网重启彻底瘫痪:如果边缘设备断电重启而此时刚好没有外网,节点无法连接中心 etcd,容器将永久无法恢复拉起。
CNCF 毕业级顶级开源边缘计算框架 KubeEdge,彻底重构了云边协同的架构范式。
它将边缘节点组件(EdgeCore)内存压缩至 70MB 以内,利用 本地 SQLite 数据库实现 100% 离线自治运行与断网自愈,并通过 WebSocket / QUIC 双向加密隧道 实现了云端控制面与海量异构边缘设备的无感纳管与消息协同。
KubeEdge 云边协同双核心架构拓扑
┌─────────────────────────────────────────────────────────────┐
│ 【云端中心控制面 (CloudCore: 运行在 K8s Master 集群)】 │
│ - EdgeController: 监听 K8s API-Server 状态变化 │
│ - CloudHub: 维护与数万个边缘节点的 WebSocket / QUIC 长连接 │
└──────────────────────────────┬──────────────────────────────┘
│
│ (基于 TLS 加密的 WebSocket/QUIC 弱网隧道)
▼
┌─────────────────────────────────────────────────────────────┐
│ 【边缘离线设备 (EdgeCore: 仅占 70MB 内存)】 │
│ - EdgeHub: 负责与云端通信,支持网络断线自动重连与退避 │
│ - MetaManager: 本地轻量 SQLite 缓存,断网断电重启 100% 自愈│
│ - Edged: 轻量裁剪版容器运行时控制器 (支持 containerd / CRI)│
│ - EventBus: 桥接本地 MQTT Broker,直连工业传感器设备 │
└─────────────────────────────────────────────────────────────┘
核心步骤一:云端部署 CloudCore 并初始化 Token 鉴权
在中心 Kubernetes 集群中部署 CloudCore 组件,并获取边缘节点加入所需的动态验证 Token:
# 1. 使用 keadm 官方工具一键初始化云端 CloudCore
keadm init --advertise-address="192.168.1.10" --profile version=v1.17.0
# 2. 获取边缘节点注册加密 Token
keadm gettoken
# 输出样例:
# 3fa85f64-5717-4562-b3fc-2c963f66afa6.eyJhbGciOiJIUzI1Ni...
核心步骤二:边缘节点轻量化一键接入
在边缘工控机(如 ARM64 Linux 嵌入式设备)上安装并启动 EdgeCore:
# 边缘设备一键接入中心云端
keadm join \
--cloudcore-ipport="192.168.1.10:10000" \
--token="3fa85f64-5717-4562-b3fc-2c963f66afa6.eyJhb..." \
--edgenode-name="edge-factory-gateway-01" \
--runtimetype="remote" \
--remote-runtime-endpoint="unix:///run/containerd/containerd.sock"
接入完成后,在中心集群执行标准 kubectl 即可看到边缘节点已正常就绪:
kubectl get nodes -l node-role.kubernetes.io/edge
# NAME STATUS ROLES AGE VERSION
# edge-factory-gateway-01 Ready edge 2m v1.28.2-kubeedge-v1.17.0
核心配置三:声明边缘业务 Pod 并配置 100% 离线自治
在向边缘节点部署业务应用时,通过配置容忍度(Tolerations)与离线自治注解,防止中心云端在断网时错误驱逐边缘容器:
apiVersion: apps/v1
kind: Deployment
metadata:
name: edge-ai-vision-inference
namespace: edge-production
spec:
replicas: 1
selector:
matchLabels:
app: edge-ai
template:
metadata:
labels:
app: edge-ai
spec:
# 1. 严格调度到边缘工控节点
nodeSelector:
node-role.kubernetes.io/edge: ""
# 2. 核心:容忍断网 NotReady 状态,严禁中心 Master 驱逐杀掉边缘 Pod
tolerations:
- key: "node.kubernetes.io/unreachable"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 86400 # 允许离线断网 24 小时不断电继续运行
- key: "node.kubernetes.io/not-ready"
operator: "Exists"
effect: "NoExecute"
tolerationSeconds: 86400
containers:
- name: inference-worker
image: registry.internal.net/edge/vision:v1.2
resources:
limits:
cpu: "1000m"
memory: "512Mi"
离线断网与断电重启自愈实测演练
在边缘节点物理拔掉网线,模拟长达 3 小时的公网中断:
- 本地容器持续正常运行:边缘 AI 视觉质检与 MQTT 传感器数据采集丝毫不停滞;
- 边缘设备断电重启:设备重新上电开机,
EdgeCore从本地 SQLite 数据库中瞬时读出历史 Pod 元数据,在 15 秒内全自动将所有业务容器在本地重新拉起并恢复运转; - 重新插上网线:网络恢复瞬间,
EdgeHub自动与云端CloudCore重新建立 TLS 长连接,增量同步离线期间产生的所有运行状态与告警,实现真正的无感状态闭环。
生产落地收益
- 边缘硬件成本削减 75%:EdgeCore 仅需 70MB 内存,支持在单核 1GB 内存的极低成本嵌入式设备上稳定运行 Kubernetes 云原生负载。
- 100% 离线自主生存(Offline Autonomy):即使与中心机房断开连接数周,边缘业务也能依靠本地 SQLite 数据库与轻量运行时正常生产,消除了弱网导致的业务瘫痪。
- 统一云原生开发体验:开发者使用完全相同的
kubectl、Helm 与 GitOps 流程管理全球上万台离散边缘节点,运维复杂度归一化。
更多推荐

所有评论(0)