4. 工业边缘硬件与网络基础
在把 K3s 落到工业现场之前,必须先回答一个比“装什么版本”更底层的问题:算力放在哪、网络怎么走、断网了怎么办。工业边缘与数据中心最大的差别,不是 CPU 快慢,而是硬件形态碎片化、网络不可靠、现场维护窗口极短。本节围绕工控机、网关、ARM 设备三类载体,梳理工业网络拓扑与离线/弱网特征,为后续 K3s 的节点规划、镜像分发和高可用设计打基础。
一、三类边缘载体:算力、接口与部署位置
工业边缘节点通常不是标准服务器,而是嵌入产线、机柜或设备旁的“小盒子”。按算力与角色,可粗分为三类:
- 工控机(IPC):x86 架构为主,常见 Intel i3/i5/i7 或 Atom,内存 8~32GB,带多网口、串口、DI/DO,支持导轨或壁挂安装。适合作为 K3s server 节点或边缘主控,承载控制逻辑、数据采集与本地可视化。
- 工业网关:算力较低,强调协议转换与南北向隔离,常见 Modbus、Profinet、OPC UA、MQTT 等接口。可作为 K3s agent 节点或独立数据汇聚层,把 PLC 数据转成容器可消费的 API/消息。
- ARM 设备:如树莓派、瑞芯微 RK3588、NXP i.MX 系列,功耗低、体积小、成本低,适合分布式传感与轻量推理。需注意 ARM64 镜像、内核模块与 GPU/NPU 驱动兼容性。
二、工业网络拓扑:分层与冗余
工业网络通常呈“现场层—控制层—边缘层—企业层”的分层结构。K3s 集群一般部署在边缘层,向上通过防火墙或 VPN 连接企业云,向下通过网关接入控制层。典型拓扑如下:
拓扑设计要点:边缘层与现场层之间用网关做协议隔离,避免 K3s 节点直接暴露在实时控制网中;边缘层内部建议双网口冗余或环网,防止单点断链导致集群脑裂;企业层连接必须经过防火墙或 VPN,且只开放必要端口。
三、离线与弱网环境的核心特征
工业现场的网络质量与办公网完全不同,常见特征包括:
- 带宽低且不稳定:4G/5G 信号在厂房内衰减严重,上传带宽可能只有几百 kbps,延迟抖动大。
- 频繁断连:设备移动、电磁干扰、运营商切换都会造成分钟级甚至小时级断网。
- 完全离线:部分产线出于安全要求物理隔离,无法访问公网镜像仓库。
- 流量成本高:按流量计费的场景下,频繁拉取镜像会带来显著成本。
四、面向弱网的 K3s 参数与镜像策略
针对上述特征,部署时需在 K3s 配置中显式调整。以下是一份可参考的 server 启动参数片段:
# /etc/rancher/k3s/config.yaml
node-ip: 192.168.10.11
flannel-iface: eth1
kubelet-arg:
- "node-status-update-frequency=30s"
- "node-monitor-grace-period=120s"
- "node-monitor-period=10s"
kube-apiserver-arg:
- "default-not-ready-toleration-seconds=300"
- "default-unreachable-toleration-seconds=300"
disable:
- traefik
- servicelb
镜像策略上,推荐“本地仓库 + 预置镜像”双保险:在边缘层部署一个轻量 Registry(如 registry:2),企业侧 CI 构建后通过离线包同步;节点首次上线前用 k3s ctr images import 导入基础镜像,避免启动时拉取。对于 ARM 设备,必须确认镜像 manifest 包含 arm64 架构。
| 场景 | 网络特征 | 推荐策略 | 关键参数/工具 |
|---|---|---|---|
| 厂内固定产线 | 有线环网,延迟稳定 | 双 server 高可用,本地 Registry | flannel-iface、etcd 快照 |
| 移动设备/AGV | Wi-Fi 漫游,偶发断连 | 延长容忍时间,边缘缓存 | not-ready-toleration-seconds |
| 偏远站点 | 4G/5G,带宽低 | 镜像预置,增量同步 | ctr images import、离线包 |
| 完全离线 | 物理隔离 | 本地仓库 + 手动导入 | registry:2、skopeo |
五、常见误区与复盘
误区一:把边缘节点当云主机管理。工业现场没有带外管理,重启可能意味着产线停机。应优先使用看门狗、双系统分区和远程电源控制,而不是频繁重装。
误区二:忽视 ARM 与 x86 的镜像差异。很多团队在 x86 上验证通过后直接推到 ARM 节点,结果 ImagePullBackOff。建议 CI 中同时构建多架构镜像,或在部署清单中显式指定 nodeSelector: kubernetes.io/arch: arm64。
误区三:弱网下仍使用默认心跳。默认参数面向数据中心,边缘场景必须放宽。复盘时应记录断网时长、Pod 驱逐次数和恢复时间,作为参数调优依据。