本指南将帮助你在Google云平台中以集群模式配置ThingsBoard。
ThingsBoard微服务在Kubernetes集群上运行。
需要安装gcloud,kops,terraform(v0.11+)和kubectl(v1.16+)。
gcloud - 用于管理GCP基础架构。
kops - 用于创建和管理kubernetes集群。
terraform - 用于在GCP中创建和管理云基础架构。
可以选择任何其他可用的Kubernetes集群部署解决方案。
cd ./gcp
访问GCP并登录请执行以下命令:
gcloud auth application-default login
获取项目ID:
gcloud projects list
设置项目k8s集群请执行以下命令:
gcloud config set project $your_project_id
创建服务帐户存储桶和k8s集群的规则请创建变量文件:
cat << EOF > terraform.tfvars
project = "$your_project_id"
svca_name = "$name_for_new_service_account"
bucket_name = "$bucket_name_for_kops"
vpc_name = "$vpc_name"
EOF
初始化terraform状态请执行以下命令:
terraform init
查看创建基础架构请执行以下命令:
terraform plan
创建基础架构k8s集群请执行以下命令:
terraform apply
此命令的输出中将拥有你的存储的名称和服务帐户电子邮件。
获取的服务帐户ID、电子邮件带有gcloud的名称请执行以下命令:
gcloud iam service-accounts list
创建服务帐户新的json密钥请执行以下命令:
gcloud iam service-accounts keys create --iam-account $serviceAccountEMAIL kops-cluster-gcp-key.json
导出创建的服务帐户json密钥的JSON文件内容请执行以下命令:
export GOOGLE_CREDENTIALS=$(cat ./kops-cluster-gcp-key.json)
创建k8s集群请执行以下命令:
PROJECT=$your_project_id
export KOPS_FEATURE_FLAGS=AlphaAllowGCE # to unlock the GCE features
kops create cluster kops-example-dev.k8s.local --zones=us-central1-a,us-central1-b,us-central1-c --gce-service-account $serviceAccountEMAIL --vpc $vpc_name --state gs://$bucket_name_for_kops/ --project=${PROJECT} --kubernetes-version=1.18.0 --node-count 3 --node-size n2-standard-4
高可用性集群请将此选项添加到最后一个命令中:
--master-count 3
--master-zones=us-central1-a,us-central1-b,us-central1-c
--node-count 6
--node-size n2-standard-4
从bucket中获取k8s集群名称请执行以下命令:
kops get cluster --state gs://$bucket_name_for_kops/
将集群部署到gcp基础架构,请执行以下命令:
kops update cluster kops-example-dev.k8s.local --state gs://$bucket_name_for_kops/ --yes
检查集群的状态请执行以下命令:
kops validate cluster --wait 10m --state gs://$bucket_name_for_kops/
检查节点:
kubectl get ndoes
导出kubectl配置请执行以下命令:
kops export kubecfg kops-example-dev.k8s.local
从ThingsBoard v2.2开始可以使用新的微服务架构和Docker容器安装ThingsBoard集群。
有关更多详细信息请参见微服务架构页面。
回到根目录cd ../
中。
在.env
文件中将PLATFORM
字段值设置为gcp
。
在执行初始安装之前可以配置与ThingsBoard一起使用的数据库的类型。
设置数据库类型在.env
文件中的DATABASE
变量的值更改为以下值:
postgres
- 使用PostgreSQL数据库;hybrid
- 使用PostgreSQL保存实体Cassandra时间序列数据;注意:根据数据库类型将部署相应的kubernetes资源(请参阅basic/postgres.yml
或high-availability/postgres-ha.yaml
进行复制的postgrescommon/cassandra.yml
有关详细信息)。
在执行初始安装之前你可以配置ThingsBoard部署的类型。
请将.env
文件中的DEPLOYMENT_TYPE
变量值更改为以下其中一个内容:
basic
- 使用Zookeeper,Kafka和Redis的单个实例启动;high-availability
- 在集群模式下使用Zookeeper,Kafka和Redis启动;注意:根据部署类型将部署相应的kubernetes资源(有关详细信息请参见basic
和high-availability
的内容)。
如果选择cassandra
作为DATABASE
则还可以配置Cassandra节点的数量(common/cassandra.yml
配置文件中的StatefulSet.spec.replicas
属性)和.env
文件中的CASSANDRA_REPLICATION_FACTOR
属性。建议有3个Cassandra节点的CASSANDRA_REPLICATION_FACTOR
等于1。
注意: 如果你想配置CASSANDRA_REPLICATION_FACTOR
请先阅读Cassandra文档。
另外要以high-availability
部署模式运行PostgreSQL需要安装helm
。
执行以下命令以运行安装:
./k8s-install-tb.sh --loadDemo
说明:
--loadDemo
- 可选参数是否安装演示数据。执行以下命令来部署第三方资源:
./k8s-deploy-thirdparty.sh
如果是第一次在high-availability
的DEPLOYMENT_TYPE
中运行ThingsBoard未配置Redis集群则在系统提示时输入‘yes’。
执行以下命令以部署ThingsBoard资源:
./k8s-deploy-resources.sh
一段时间后当所有资源都将成功启动时可以使用负载均衡器的dns名称在浏览器中打开ThingsBoard Web界面。
可以使用以下命令查看负载均衡器的DNS名称:
kubectl get ingress -oyaml
或者在AWS ELB页面上看到此名称。
你应该看到ThingsBoard登录页面。
使用以下默认凭据:
如果使用演示数据(使用--loadDemo
标志)安装了数据库则还可以使用以下凭据:
如有任何问题可以检查服务日志中是否有错误。 例如要查看ThingsBoard节点日志请执行以下命令:
1)获取正在运行的tb节点容器的列表:
kubectl get pods -l app=tb-node
2)获取tb节点容器的日志:
kubectl logs -f $tb-node-pod-name
说明:
tb-node-pod-name
- 从正在运行的tb-node pod列表中获得的tb-node pod名称。使用kubectl get pods
查看所有Pod的状态。
使用kubectl get services
查看所有服务的状态。
使用kubectl get deployments
来查看所有部署的状态。
有关详细信息请参见kubectl Cheat Sheet命令参考。
执行以下命令删除所有ThingsBoard微服务:
./k8s-delete-resources.sh
执行以下命令删除所有第三方微服务:
./k8s-delete-thirdparty.sh
执行以下命令删除所有资源(包括数据库):
./k8s-delete-all.sh
销毁k8s集群和GCP资源请执行以下命令:
kops delete cluster kops-example-dev.k8s.local --state gs://$bucket_name_for_kops/ --yes
export GOOGLE_CREDENTIALS=""
terraform destroy
如果需要数据库升级请执行以下命令:
./k8s-delete-resources.sh
./k8s-upgrade-tb.sh --fromVersion=[FROM_VERSION]
./k8s-deploy-resources.sh
说明:
FROM_VERSION
- 从哪个版本开始升级关于fromVersion
值请参见升级说明。入门指南 - 这些指南提供了ThingsBoard主要功能的快速概述。
设备连接 - 了解如何根据您的连接方式或解决方案连接设备。
数据看板 - 这些指南包含有关如何配置复杂的ThingsBoard仪表板的说明。
数据处理 - 了解如何使用ThingsBoard规则引擎。
数据分析 - 了解如何使用规则引擎执行基本的分析任务。
硬件样品 - 了解如何将各种硬件平台连接到ThingsBoard。
高级功能 - 了解高级ThingsBoard功能。
开发指南 - 了解ThingsBoard中的贡献和开发。