确保当前环境安装了以下工具并能成功连接到对应的 Kubernetes 集群
根据对应的需求修改 helm/values.yaml 里的配置参数。具体为:
确认当前集群的存储介质,并指定相应的storageClass。IoTDB 将会根据storageClass 在对应的数据存储介质上创建pv
storage:
className: local-storage # 将该值指定为当前Kubernetes 中可用的存储介质
确认集群规模
datanode:
# datanode 的节点数量
nodeCount: 3
# 每个 datanode 对应的数据目录的大小,需要根据设计的数据量指定,且指定后不可修改,生产环境中,建议根据数据量的大小给定充足的空间
storageCapacity: 20Gi
confignode:
# confignode 的节点数量
nodeCount: 3
# confignode 使用的pvc的大小,一般不会超过10Gi,可直接使用默认值
storageCapacity: 10Gi
确认数据副本数
IoTDB 集群可以提供数据的多副本存储能力。可根据自身使用的存储介质进行灵活的选择。例如,storageClass对应的数据存储介质本身不提供数据的副本能力,则可以将元数据的副本设置为3、数据的副本也设置为3的方式来保证数据的可用性;如果storageClass对应的数据存储介质做了数据冗余,那无需在IoTDB 集群层面进行数据的多副本存储,可将元数据副本数置为1,数据副本数置为1或2。
confignode:
# 元数据副本数
schemaReplicationFactor: 1
# 数据副本数
dataReplicationFactor: 2
进入 ./helm/ 目录,执行install 命令,将 IoTDB Cluster 安装到 Kubernetes 环境中
helm install iotdb-cluster .
可以通过kubectl 命令来查看部署的进展,当所有pod 为 Running 状态时,系统就处于可以状态了, 如下图所示
DataNode 的地址为 datanode-<N>.datanode-svc.iotdb-cluster, 端口号为6667;需要根据想要连接的datanode的序号,修改地址中<N> 的值; 例如,datanode-0.datanode-svc.iotdb-cluster 表示datanode-0 的地址。
如果希望通过集群外部的程序连接到集群,则需要将集群中的 datanode-svc 映射到集群外可以访问的地址;这可能取决于当前 Kubernetes 集群的云特性。
例如,如果您的 Kubernetes 集群具有LoadBalancer 的功能,则您可以将 datanode 的6667端口映射到集群外部;
如果仅仅是为了进行本地测试,则可以通过nodePort 的方式将节点datanode的6667端口映射到Kubernetes集群节点的某一端口,并通过映射后的端口和节点的ip地址对datanode进行连接。可参考
# node-port.yaml
apiVersion: v1
kind: Service
metadata:
namespace: iotdb-cluster
name: datanode-nodeport
spec:
type: NodePort
ports:
- port: 6667
targetPort: 6667
nodePort: 32667
selector:
app: datanode
下面,以3个ConfigNode、3个DataNodes的部署方案为例,展示一下集群部署后各组件的运行状况
Pod运行情况
pvc 使用情况
每个confignode\datanode 都会独立使用一个pvc,并将其数据持久化到对应的pvc中
使用cli通过datanode的集群内部地址建立连接
展示集群中的节点情况
可以看到,集群中的节点地址均为Kubernetes 中内部FQDN
展示集群中的前十条时间序列(已经进行了测试数据写入)
进行数据查询