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

随着物联网(IoT)、车载智能终端、5G 边缘基站与智能工厂边缘网关的爆发式普及,云原生技术的版图正迅速从“中心化数据中心”向“离散弱网的物理边缘现场(Edge Computing)”狂飙突进。
然而,传统的原生 Kubernetes 节点组件(kubelet)在直接部署到边缘轻量级设备(如 2GB 内存的工控机或树莓派)时,会遭遇三大致命水土不服:
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 小时的公网中断:

