使用 Minikube 安装 ThingsBoard 集群【不推荐】
正文与配图来自原稿。标题已标明 不推荐:Ingress 插件镜像难拉、脚本偏旧、hostPath 不适合生产。
更推荐: Ubuntu 24.04 Minikube 部署 CE(官方较新脚本);云上多节点见 阿里云实战 K8s 部署。
1、安装 Minikube
按运维习惯装好 Minikube / kubectl(细节略)。本篇重点在 TB 脚本与 PV。
2、启用 Ingress 插件(痛点)
官网常要求:
minikube addons enable ingress原稿备注:这一步经常下不动镜像,会卡很久。若失败可跳过 Ingress,后面用 NodePort 暴露(见第 8 节)。
3、克隆 CE K8s 脚本
git clone -b release-3.4.4 https://github.com/thingsboard/thingsboard-ce-k8s.git
cd thingsboard-ce-k8s/minikube分支请按目标 TB 版本调整;3.4.4 为原稿年代。
4、配置数据库(.env)
支持:
| 值 | 含义 |
|---|---|
postgres | 仅 PostgreSQL |
hybrid | PG 存实体,Cassandra 存时序 |
hybrid 时建议 .env 里 CASSANDRA_REPLICATION_FACTOR ≤ cassandra.yml 副本数(例如因子 2、副本 3)。


5、创建数据库相关 PV
自建 thingsboard-db-pv.yml:为 postgres、cassandra-0/1/2 等写 hostPath PV,并用 claimRef 绑到对应 PVC 名(注意 StatefulSet 后缀,如 cassandra-data-cassandra-0)。
kubectl apply -f thingsboard-db-pv.yml
PVC 定义在 postgres.yml / cassandra.yml;PV 名与 PVC 名要对齐:


完整 YAML 以原稿为准(路径多在 /tmp/data/...,仅适合实验)。
6、初始化数据库
./k8s-install-tb.sh --loadDemo--loadDemo 可选,加载演示数据。完成后:
kubectl get pods

7、第三方依赖 PV + 部署
再建 thingsboard-third-pv.yml(Zookeeper / Kafka 等 data、datalog、config 的 hostPath),然后:
kubectl apply -f thingsboard-third-pv.yml
kubectl get pv
kubectl get pvc
./k8s-deploy-thirdparty.sh # 或原稿中的 thirdparty 脚本名


8、部署 TB 服务
thingsboard-tb-pv.yml:为 tb-node、mqtt/http/coap transport 日志等建 PV,再:
kubectl apply -f thingsboard-tb-pv.yml
./k8s-deploy-resources.sh若出现:
error: unable to recognize "routes.yml": no matches for kind "Ingress" in version "networking.k8s.io/v1"多半是集群 Ingress API / 插件未就绪。可暂忽略 Ingress,改用 NodePort;或升级 K8s / 修好 Ingress 后再套官方 routes.yml。
9、改 NodePort 暴露
kubectl edit svc tb-web-ui # ClusterIP → NodePort
kubectl edit svc tb-node
kubectl get deployment,pod,svc


云主机还需在安全组放行 NodePort(如 3xxxx):

MQTT 等同理改 svc 类型并开端口。
10、验证
浏览器访问:http://<公网IP>:<web-ui-NodePort>/


11、为何不推荐
- Ingress 插件拉镜像失败率高。
- hostPath +
/tmp数据易丢、不能调度迁移。 - 脚本分支偏旧,与当前官方 Minikube 文档不一致。
- NodePort 临时端口不利于固定运维。
学习链路请优先 Ubuntu 24.04 Minikube;多 ECS 实战见下一篇。
