白云矿区某矿业企业K3s轻量级Kubernetes边缘集群部署:5个矿区节点免运维管理实战

项目背景:矿业边缘计算需求

包头白云矿区某矿业企业,在白云矿区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个容器:

  1. sensor-collector:Python应用,通过Modbus RTU/TCP读取传感器数据,写入本地Redis缓存
  2. data-aggregator:Java应用,每5分钟从Redis拉取数据做清洗聚合,写入本地SQLite
  3. 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(包头本地团队,随叫随到!)

上一篇 东河区某社区连锁便利店6门店小程序商城开发:从库存同步到社区团购的完整实战
下一篇 石拐区某建筑设计院BIM软件正版化整改:Revit+AutoCAD+Navisworks许可服务器部署与合规管理