跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

Apache IoTDB 在 Kubernetes 集群中的部署与实践指南

Apache IoTDB 是面向物联网的时序数据库。介绍基于 Kubernetes 和 Helm 的高可用部署方案。内容包括环境准备、PV 配置、Helm Chart 参数调整、私有仓库认证、安装流程及激活方法。详细说明了 ConfigNode 与 DataNode 的资源规划、存储持久化策略、故障排查手段以及三种激活模式,支持快速验证集群状态与连接测试。

CoderByte发布于 2026/3/15更新于 2026/10/1790 浏览
Apache IoTDB 在 Kubernetes 集群中的部署与实践指南

Apache IoTDB 在 Kubernetes 集群中的部署与实践指南

一、Apache IoTDB 产品解析

1.1 核心特性

  • 极致时序数据处理:支持每秒百万级数据点写入,通过列式存储和时间分区技术实现 5-10 倍压缩率。
  • 灵活查询能力:提供类 SQL 语法,支持时间窗口分析、降采样及多设备数据对齐。
  • 边缘 - 云端协同:轻量级设计支持边缘设备部署,同时可通过分布式集群实现水平扩展。
  • 生态集成:内置 MQTT 服务器、支持 Kafka/Spark 集成,提供 Java/Python 客户端。

1.2 架构设计

  • 存储组(Storage Group):逻辑隔离单元,类似传统数据库的'库'概念。
  • 设备层(Device):对应传统数据库的'表',存储具体传感器数据。
  • 时间序列(Timeseries):最小数据单元,支持 FLOAT、TEXT、VECTOR 等数据类型。

二、版本要求

需要在本地有一个可用的 Kubernetes 集群,作为部署 IoTDB 集群的基础。

组件版本要求
Kubernetes1.24 以上
IoTDBv1.3.3.2 以上
存储类local-storage
节点配置4 核 8G 起

三、Kubernetes 环境准备

3.1 创建命名空间

注意:在执行命名空间创建操作之前,需验证所指定的命名空间名称在 Kubernetes 集群中尚未被使用。如果命名空间已存在,创建命令将无法执行。

kubectl create ns iotdb-ns 
kubectl get ns 

3.2 创建 PV 配置文件

PV 用于持久化存储 IoTDB 的 ConfigNode 和 DataNode 的数据,集群中有几个节点就要创建几个 PV。

注意:1 个 ConfigNode 和 1 个 DataNode 也算 2 个节点,要 2 个 PV。

博主这边以 3ConfigNode、3DataNode 为例:

  1. 创建 pv.yaml 文件,并复制六份,分别重命名为 pv01.yaml 到 pv06.yaml。

    新建文件夹放 yaml 文件

创建 pv.yaml 文件命令:

touch pv.yaml 
  1. 修改每个文件中的 name 和 path 以确保一致性。 举例 pv.yaml:
apiVersion: v1
kind: PersistentVolume

   

  
     
  
     
   
   
  
     
     
metadata:
name:
iotdb-pv-01
spec:
capacity:
storage:
10Gi
accessModes:
-
ReadWriteOnce
persistentVolumeReclaimPolicy:
Retain
storageClassName:
local-storage
hostPath:
path:
/data/k8s-data/iotdb-pv-01
type:
DirectoryOrCreate
  1. 应用 PV 配置(pv-01.yaml 到 pv-06.yaml 都要应用)。 配置命令:
kubectl apply -f pv-01.yaml
kubectl apply -f pv-02.yaml
# 这里一直到 pv-06.yaml
  1. 配置完成后进行查看。 查看命令:
kubectl get pv
  1. 手动创建文件夹。 如果 yaml 里的 hostPath-type 未配置,需要手动去创建对应的文件夹。

注意:要在所有 Kubernetes 节点上创建对应的文件夹。

创建命令:

mkdir -p /data/k8s-data/iotdb-pv-01
mkdir -p /data/k8s-data/iotdb-pv-02
# 这里一直到 pv-06.yaml

3.3 安装 Helm

需要参考 Helm 官网,此处不做过多叙述。 Helm 官方安装链接

四、IoTDB 的 Helm Chart 的配置

4.1 克隆 IoTDB Kubernetes 部署代码

需要联系工作人员获取 IoTDB 的 Helm Chart。

如果谁遇到代理问题,可以取消代理设置来解决:

git clone 报错如下,说明是配置了代理,需要把代理关掉 fatal: unable to access 'https://gitlab.timecho.com/r-d/db/iotdb-cluster-k8s.git/': gnutls_handshake() failed: The TLS connection was non-properly terminated.

取消代理命令:

unset HTTPS_PROXY 

4.2 修改 YAML 文件

values.yaml 文件示例:

nameOverride: "iotdb"
fullnameOverride: "iotdb"
image:
  repository: nexus.infra.timecho.com:8143/timecho/iotdb-enterprise
  pullPolicy: IfNotPresent
  tag: 1.3.3.2-standalone
storage:
  className: local-storage
datanode:
  name: datanode
  nodeCount: 3
  enableRestService: true
  storageCapacity: 10Gi
  resources:
    requests:
      memory: 2Gi
      cpu: 1000m
    limits:
      memory: 4Gi
      cpu: 1000m
confignode:
  name: confignode
  nodeCount: 3
  storageCapacity: 10Gi
  resources:
    requests:
      memory: 512Mi
      cpu: 1000m
    limits:
      memory: 1024Mi
      cpu: 2000m
configNodeConsensusProtocolClass: org.apache.iotdb.consensus.ratis.RatisConsensus
schemaReplicationFactor: 3
schemaRegionConsensusProtocolClass: org.apache.iotdb.consensus.ratis.RatisConsensus
dataReplicationFactor: 2
dataRegionConsensusProtocolClass: org.apache.iotdb.consensus.iot.IoTConsensus

4.3 配置私库信息

  1. 创建 secret 使 k8s 可访问 iotdb-helm 的私有仓库

'xxxxxx'是 IoTDB 私有仓库的账号、密码、邮箱。

kubectl create secret docker-registry timecho-nexus \
  --docker-server='nexus.infra.timecho.com:8143' \
  --docker-username='xxxxxx' \
  --docker-password='xxxxxx' \
  --docker-email='xxxxxx' \
  -n iotdb-ns 

查看 secret:

kubectl get secret timecho-nexus -n iotdb-ns 

查看并输出为 yaml:

kubectl get secret timecho-nexus --output=yaml -n iotdb-ns 

查看并解密:

kubectl get secret timecho-nexus --output="jsonpath={.data\.dockerconfigjson}" -n iotdb-ns | base64 --decode
  1. 加载到命名空间 iotdb-ns 添加一个 patch,使该命名空间增加登陆 nexus 的登陆信息。
kubectl patch serviceaccount default -n iotdb-ns -p'{"imagePullSecrets": [{"name": "timecho-nexus"}]}'

查看命名空间的该条信息:

kubectl get serviceaccounts -n iotdb-ns -o yaml 

五、安装 IoTDB

5.1 安装步骤

进入文件夹:

cd iotdb-cluster-k8s/helm 

安装 iotdb:

helm install iotdb ./ -n iotdb-ns 

5.2 查看 Helm 安装列表

helm list -n iotdb-ns 

5.3 查看 Pods

查看 iotdb 的 pods:

kubectl get pods -n iotdb-ns -o wide 

执行命令后,输出了带有 confignode 和 datanode 标识的各 3 个 Pods,总共 6 个 Pods,即表明安装成功;需要注意的是,并非所有 Pods 都处于 Running 状态,未激活的 datanode 可能会持续重启,但在激活后将恢复正常。

5.4 排查问题方式

  1. 查看 k8s 的创建 log:
kubectl get events -n iotdb-ns watch
kubectl get events -n iotdb-ns 
  1. 获取详细信息:
kubectl describe pod confignode-0 -n iotdb-ns
kubectl describe pod datanode-0 -n iotdb-ns
  1. 查看 confignode 日志:
kubectl logs -n iotdb-ns confignode-0 -f

5.5 三种方案激活 IoTDB

方案 1:直接在 Pod 中激活(最简单) 拿到机器码后进行激活:

kubectl exec -it -n iotdb-ns confignode-0 -- /iotdb/sbin/start-activate.sh
kubectl exec -it -n iotdb-ns confignode-1 -- /iotdb/sbin/start-activate.sh
kubectl exec -it -n iotdb-ns confignode-2 -- /iotdb/sbin/start-activate.sh 

方案 2:进入 confignode 的容器中激活 拿到机器码后进行激活:

kubectl exec -it -n iotdb-ns confignode-0 -- /bin/bash
cd /iotdb/sbin
/bin/bash start-activate.sh 

方案 3:手动激活

  1. 查看 ConfigNode 详细信息,确定所在节点:
kubectl describe pod confignode-0 -n iotdb-ns | grep -e "Node:" -e "Path:"

结果示例:

Node: a87/172.20.31.87 Path: /data/k8s-data/env/confignode/.env 
  1. 查看 PVC 并找到 ConfigNode 对应的 Volume,确定所在路径:
kubectl get pvc -n iotdb-ns | grep "confignode-0"

也可以查看多个 confignode:

for i in {0..2}; do echo confignode-$i; kubectl describe pod confignode-${i} -n iotdb-ns | grep -e "Node:" -e "Path:"; echo "----"; done
  1. 查看对应 Volume 的详细信息,确定物理目录的位置:
kubectl describe pv iotdb-pv-04 | grep "Path:"

结果示例:

Path: /data/k8s-data/iotdb-pv-04 
  1. 从对应节点的对应目录下找到 system-info 文件,使用该 system-info 作为机器码生成激活码,并在同级目录新建文件 license,将激活码写入到文件里面。

5.6 验证 IoTDB

  1. 查看命名空间内的 Pods 状态 查看 iotdb-ns 命名空间内的 IP、状态等信息,确定全部运行正常:
kubectl get pods -n iotdb-ns -o wide 

结果示例:

NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
confignode-0 1/1 Running 0 75m 10.20.187.14 a87 <none> <none>
confignode-1 1/1 Running 0 75m 10.20.191.75 a88 <none> <none>
confignode-2 1/1 Running 0 75m 10.20.187.16 a87 <none> <none>
datanode-0 1/1 Running 10 (5m54s ago) 75m 10.20.191.74 a88 <none> <none>
datanode-1 1/1 Running 10 (5m42s ago) 75m 10.20.187.15 a87 <none> <none>
datanode-2 1/1 Running 10 (5m55s ago) 75m 10.20.191.76 a88 <none> <none>
  1. 查看命名空间内的端口映射情况:
kubectl get svc -n iotdb-ns 
  1. 在任意服务器启动 CLI 脚本验证 IoTDB 集群状态 端口就是 jdbc-balancer 的端口,服务器为 k8s 任意节点的 IP 都可以:
start-cli.sh -h 172.20.31.86 -p 31895
start-cli.sh -h 172.20.31.87 -p 31895
start-cli.sh -h 172.20.31.88 -p 31895

六、结语

本文详细介绍了 Kubernetes 与 IoTDB 数据库的集成部署。通过 Kubernetes 的容器编排能力,IoTDB 可以快速部署,并实现高可用性。

Apache IoTDB 下载地址

目录

  1. Apache IoTDB 在 Kubernetes 集群中的部署与实践指南
  2. 一、Apache IoTDB 产品解析
  3. 1.1 核心特性
  4. 1.2 架构设计
  5. 二、版本要求
  6. 三、Kubernetes 环境准备
  7. 3.1 创建命名空间
  8. 3.2 创建 PV 配置文件
  9. 这里一直到 pv-06.yaml
  10. 这里一直到 pv-06.yaml
  11. 3.3 安装 Helm
  12. 四、IoTDB 的 Helm Chart 的配置
  13. 4.1 克隆 IoTDB Kubernetes 部署代码
  14. 4.2 修改 YAML 文件
  15. 4.3 配置私库信息
  16. 五、安装 IoTDB
  17. 5.1 安装步骤
  18. 5.2 查看 Helm 安装列表
  19. 5.3 查看 Pods
  20. 5.4 排查问题方式
  21. 5.5 三种方案激活 IoTDB
  22. 5.6 验证 IoTDB
  23. 六、结语

更多推荐文章

查看全部
  • iOS App Store 上架全流程:打包、上传与审核指南
  • 多设备共用键盘鼠标的 Synergy 配置指南(Windows + Ubuntu)
  • OpenClaw 开源 AI Agent 框架:自托管与无代码实战指南
  • AI 辅助 Java 入门:从环境搭建到基础语法实战
  • 本地离线部署 AI 大模型:Ollama + OpenClaw + Qwen3.5 实战指南
  • C 语言代码优化与性能调优:编译器、内存与算法实战
  • Python 使用 ReportLab 自动生成 PDF 报告实战(含中文支持)
  • 使用 ONNX 加载头部姿态评估模型并集成到 LLM Agent
  • Python AI 入门:从线性回归到图像分类
  • 前端开发基础:HTML 常用标签与结构详解
  • Ubuntu 22.04 升级 Node.js 版本方法
  • Java 静态代码块与构造代码块详解
  • Redis 字符串类型核心命令详解
  • 实战:利用 AI 助手将自然语言转化为 SQL 查询
  • Neo4j 安装与使用教程
  • 机器人操作通用单样本多模态主动感知框架:学习预测最优视角
  • Python 安装、配置及多版本共存教程
  • 三维人体姿态估计前沿算法与论文案例
  • 多模态 Agent 图像识别 Skills 开发实战:Web 全栈图像处理方案
  • Roo Code 深度上手指南:从 API 配置到实战

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online