项目背景:矿业边缘计算需求
包头白云矿区某矿业企业,在白云矿区5个采矿点部署了环境监测设备(粉尘、噪音、气体浓度传感器),每个采矿点的边缘计算节点需要实时采集传感器数据、做初步清洗聚合后回传至总部数据中心。
传统方案是在每个采矿点部署一台服务器运行采集程序,但面临以下痛点:矿点分散(相距3-15公里)、网络不稳定(矿区4G回传)、无驻场IT人员、应用更新需人工到现场。2026年6月,企业决定采用K3s构建边缘Kubernetes集群,实现5个矿点+1个总部管理节点的统一管理。
架构设计:1 Master + 5 Edge Node
节点规划
| 角色 | 位置 | 硬件配置 | 网络 |
|---|---|---|---|
| Master节点 | 总部数据中心机房 | 戴尔R650(Xeon 4314 16C/64G/2×960G SSD) | 固定IP/100M专线 |
| Edge-1 | 1号采矿点 | 研华ARK-3534工控机(i5-11400/16G/480G SSD) | 4G回传 |
| Edge-2 | 2号采矿点 | 同上 | 4G回传 |
| Edge-3 | 3号采矿点 | 同上 | 4G回传+卫星备份 |
| Edge-4 | 4号采矿点 | 同上 | 4G回传 |
| Edge-5 | 5号采矿点 | 同上 | 4G回传 |
为什么选K3s而非K8s
- 轻量:K3s单二进制约70MB,内存占用256MB,适合工控机资源受限场景
- 内置容器运行时:K3s内置containerd,无需额外安装Docker
- 网络插件:内置Flannel VXLAN,矿区跨节点通信无需额外配置
- 离线安装:将K3s二进制和离线镜像打包,无需矿点联网即可安装
- Tunnel后端:Edge节点通过TLS隧道连接Master,无需Master暴露API端口至公网
部署实施:离线安装+批量脚本
步骤1:制作离线安装包
在总部服务器上下载K3s v1.29.4+k3s1二进制文件和离线镜像包:
# 下载K3s二进制 wget https://github.com/k3s-io/k3s/releases/download/v1.29.4+k3s1/k3s wget https://github.com/k3s-io/k3s/releases/download/v1.29.4+k3s1/k3s-airgap-images-amd64.tar.zst # 制作离线安装包 mkdir -p /k3s-offline cp k3s /k3s-offline/ cp k3s-airgap-images-amd64.tar.zst /k3s-offline/ # 将业务镜像一并打包 docker save -o /k3s-offline/app-images.tar sensor-collector:latest data-aggregator:latest alert-gateway:latest # 打包安装脚本 cp install-master.sh install-edge.sh /k3s-offline/ tar czf k3s-offline.tar.gz /k3s-offline/
步骤2:Master节点安装
# 安装K3s Server(Master) INSTALL_K3S_SKIP_DOWNLOAD=true K3S_KUBECONFIG_MODE="644" ./install-master.sh server --tls-san 10.0.0.1 --data-dir /data/k3s --kube-apiserver-arg=default-not-ready-toleration-seconds=300 --kube-apiserver-arg=default-unreachable-toleration-seconds=300 # 获取Edge节点加入Token cat /var/lib/rancher/k3s/server/node-token # 输出:K101234...(复制此Token)
toleration参数配置为300秒,目的是当矿区4G网络抖动导致Edge节点短暂失联时,不会立即驱逐Pod,给网络恢复留出缓冲时间。
步骤3:Edge节点批量安装
# 在每个Edge工控机上执行
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://master.internal:6443 K3S_TOKEN=K101234... ./install-edge.sh agent --node-label=edge-node=true --node-label=mine-point=P1 --data-dir /data/k3s --node-ip $(hostname -I | awk '{print $1}')
5台Edge节点通过4G网络连接Master的TLS隧道注册,整个过程在每台工控机上执行约3分钟。安装完成后在Master上查看节点状态:
kubectl get nodes -o wide NAME STATUS ROLES AGE VERSION INTERNAL-IP master Ready control 1h v1.29.4+k3s1 10.0.0.1 edge-1 Ready <none> 45m v1.29.4+k3s1 192.168.10.1 edge-2 Ready <none> 44m v1.29.4+k3s1 192.168.20.1 edge-3 Ready <none> 43m v1.29.4+k3s1 192.168.30.1 edge-4 Ready <none> 42m v1.29.4+k3s1 192.168.40.1 edge-5 Ready <none> 41m v1.29.4+k3s1 192.168.50.1
应用部署:传感器数据采集流水线
每个Edge节点上部署3个容器:
- sensor-collector:Python应用,通过Modbus RTU/TCP读取传感器数据,写入本地Redis缓存
- data-aggregator:Java应用,每5分钟从Redis拉取数据做清洗聚合,写入本地SQLite
- data-sender:Go应用,每10分钟将SQLite中的聚合数据通过HTTPS回传至总部API
使用DaemonSet确保每个Edge节点运行一份采集器,Deployment部署聚合和回传应用。通过nodeSelector将采集器绑定到指定矿点。
应用远程更新
在总部Master上构建新镜像→推送至本地Harbor仓库→修改Deployment YAML中的image tag→kubectl apply。Edge节点会自动拉取新镜像并滚动更新,无需人工到现场。考虑到4G网络带宽有限,镜像做了分层优化,单次更新传输约15MB。
网络中断容错
矿区4G网络平均每周断线2-3次,每次10-60分钟。K3s的容错机制:
- 节点失联300秒内不驱逐Pod(toleration配置)
- 本地SQLite缓存7天数据,网络恢复后批量回传
- K3s Agent内置重连机制,网络恢复后自动重新注册
实际运行2个月数据:5个Edge节点累计断线47次,均自动恢复,无数据丢失。
运维监控
在Master上部署Prometheus + Grafana监控面板,监控指标包括:
- 各节点CPU/内存/磁盘使用率
- Pod运行状态和重启次数
- 4G网络延迟和丢包率(通过ping Master节点)
- 传感器数据采集成功率
告警规则:节点NotReady超过10分钟→企业微信机器人告警;采集成功率低于95%→告警。
包头企业K3s/K8s集群部署、边缘计算方案、服务器运维管理,请联系不舍昼夜技术:17704868686,提供架构设计、部署实施、运维监控一站式服务。
【不舍昼夜技术 · 包头IT一站式服务】
电脑/服务器:重装系统、硬件升级、服务器Linux/Windows环境部署
数据安全:硬盘/U盘/数据库数据恢复、网络安全加固、病毒清理
弱电安防:监控安装、机房建设、综合布线、门禁人脸识别
办公耗材:打印机维修、硒鼓墨盒配送、复印机租赁
软件开发:企业官网、小程序开发、APP定制、ERP系统
服务单位:内蒙古不舍昼夜技术有限公司
业务涵盖:电脑维修/系统重装/数据恢复/监控安防/弱电布线/打印耗材
技术热线:17704868686(包头本地团队,随叫随到!)