ThingsBoard容器化部署:Docker与Kubernetes配置全攻略

ThingsBoard容器化部署:Docker与Kubernetes配置全攻略

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

在物联网(IoT)项目开发中,平台的部署效率直接影响项目迭代速度。ThingsBoard作为开源IoT平台,提供了设备管理、数据采集、处理与可视化的完整解决方案。本文将详细介绍如何通过Docker Compose实现快速部署,以及基于Kubernetes的生产级配置方案,帮助运营人员和开发团队解决多服务协同、资源调度与监控告警等核心痛点。

环境准备与基础架构

系统要求与依赖组件

部署ThingsBoard容器化环境需提前安装Docker CE和Docker Compose。项目提供的自动化脚本已针对Linux环境优化,确保各服务间网络通畅与权限正确。核心依赖组件包括:

容器化架构概览

ThingsBoard微服务架构通过功能拆分实现高可用,主要包含以下模块:

  • 核心服务:tb-core1/tb-core2(双节点冗余)
  • 规则引擎:tb-rule-engine1/tb-rule-engine2(规则处理与数据流转)
  • 传输协议:MQTT/HTTP/CoAP/LwM2M/SNMP多种协议接入
  • 前端应用:tb-web-ui1/tb-web-ui2(负载均衡部署)

mermaid

Docker Compose快速部署

目录结构与配置文件

项目的Docker配置集中在docker/目录,关键文件包括:

数据库与缓存配置

支持PostgreSQL(默认)和Cassandra两种数据库,通过修改.env文件切换:

# 切换数据库类型(postgres/hybrid)
DATABASE=postgres
# 缓存类型配置(valkey/valkey-cluster/valkey-sentinel)
CACHE=valkey

对应的配置文件:docker-compose.postgres.ymldocker-compose.valkey.yml

部署步骤

  1. 创建日志目录(需sudo权限):
./docker-create-log-folders.sh
  1. 初始化安装(含演示数据):
./docker-install-tb.sh --loadDemo
  1. 启动服务
./docker-start-services.sh

服务启动后可通过http://localhost访问,默认管理员账号:sysadmin@thingsboard.org/sysadmin

高级配置与性能优化

服务扩缩容

通过修改docker-compose.yml中的replicas参数调整服务实例数量,例如JS执行器扩容:

tb-js-executor:
  deploy:
    replicas: 10  # 根据规则复杂度调整

docker-compose.yml#L30-L31

资源限制与日志管理

为避免单服务资源抢占,建议配置容器资源限制:

tb-core1:
  deploy:
    resources:
      limits:
        cpus: '2'
        memory: 4G
  logging:
    driver: "json-file"
    options:
      max-size: "200m"
      max-file: "30"

docker-compose.yml#L40-L44

监控集成

启用Prometheus+Grafana监控需设置MONITORING_ENABLED=true,相关配置:

Kubernetes生产环境部署

容器化改造要点

将Docker Compose配置迁移至K8s需注意:

  1. StatefulSet:替换Docker Compose的固定服务名,使用Headless Service实现稳定网络标识
  2. ConfigMap/Secret:管理环境变量与敏感配置(如数据库密码)
  3. PersistentVolume:替换宿主机挂载,实现数据持久化

示例配置片段

Deployment for tb-core:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: tb-core
spec:
  replicas: 2
  template:
    spec:
      containers:
      - name: tb-core
        image: thingsboard/tb-node:latest
        env:
        - name: TB_SERVICE_TYPE
          value: "tb-core"
        ports:
        - containerPort: 8080
        volumeMounts:
        - name: config
          mountPath: /config
  volumes:
  - name: config
    configMap:
      name: tb-node-config

服务暴露与Ingress配置

通过Ingress-NGINX实现HTTP/HTTPS路由,MQTT协议需使用NodePort或LoadBalancer:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: thingsboard-ingress
spec:
  rules:
  - host: iot.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: tb-web-ui
            port:
              number: 80

运维与监控

日志管理与问题排查

服务日志通过JSON格式输出,关键路径:

  • 核心服务日志:docker/tb-node/log
  • 传输服务日志:docker/tb-transports/mqtt/log

常用排查命令:

# 查看核心服务日志
docker-compose logs -f tb-core1 tb-core2
# 检查服务状态
docker-compose ps | grep tb-

监控指标与告警

启用Prometheus监控后,可通过http://localhost:9090访问指标,关键监控项:

  • jvm_memory_used_bytes{service="tb-core"}(JVM内存使用)
  • mqtt_transport_connected_clients(MQTT连接数)
  • rule_engine_processing_time_seconds(规则处理耗时)

Grafana预置面板位于docker/monitoring/grafana/provisioning/dashboards,默认账号admin/foobar。

升级与扩展

版本升级流程

通过项目提供的升级脚本实现平滑迁移:

./docker-stop-services.sh
./docker-upgrade-tb.sh --fromVersion=3.4.1
./docker-start-services.sh

升级前需备份数据库,配置文件变更可参考upgrade-tb.sh的差异对比逻辑。

边缘计算集成

ThingsBoard Edge支持边缘节点部署,通过tb-core.env中的EDGES_ENABLED=true启用,相关代码实现位于common/edge-api/

总结与最佳实践

容器化部署使ThingsBoard实现"一键启动"的同时,保持企业级可靠性。生产环境建议:

  1. 资源规划:每个tb-core节点至少2核4G内存
  2. 数据备份:定期备份PostgreSQL/Cassandra数据卷
  3. 安全加固:通过HAProxy配置HTTPS,限制容器间网络访问
  4. 监控告警:配置JVM内存、数据库连接数等关键指标告警

完整部署文档可参考docker/README.md,社区贡献的Kubernetes配置示例位于msa/目录。通过容器化技术,ThingsBoard能够轻松应对从测试环境到大规模生产部署的全场景需求。

【免费下载链接】thingsboard Open-source IoT Platform - Device management, data collection, processing and visualization. 【免费下载链接】thingsboard 项目地址: https://gitcode.com/GitHub_Trending/th/thingsboard

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值