概述大纲

以微服务方式,部署thingsboard,探索云原生技术。

配合使用KubeSphere,一个以 Kubernetes 为内核的云原生分布式操作系统,降低k8s使用门槛,可视化方式应对部署thingsboard过程中问题,观察部署thingsboard状态,同时方便后续维护。

成果展示

image-20230513113001-kp2j5gy.png

image-20230513113036-du5usw7.png

image-20230513113150-azhayit.png

前言

image-20230512165511-xw7migu.png

前置条件

ThingsBoard微服务在Kubernetes集群上运行你需要有一个Kubernetes集群并且必须配置kubectl​​命令行工具才能与你的集群通信。

1、本次教程不用安装Minikube,但需要提前安装好Kubernetes集群

2、建议全新的linux,在 Linux 上以 All-in-One 模式安装 KubeSphere,同时完成Kubernetes集群

在 Linux 上以 All-in-One 模式安装 KubeSphere:https://kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/

thingsboard3.4.4安装参考:基于Minikube集群安装方式 Cluster setup using Minikube | ThingsBoard Community Edition

第 1 步,查看thingsboard体系结构

参考:物联网板微服务架构 |事物板社区版 (thingsboard.io)

image-20230512172116-qnlilfr.png

第 2 步,复制安装脚本到本地目录, ThingsBoard CE Kubernetes scripts repository

git clone -b release-3.4.4 https://github.com/thingsboard/thingsboard-ce-k8s.git

cd thingsboard-ce-k8s/minikube

第 3 步。配置 ThingsBoard 数据库

在执行初始安装之前,您可以配置要与 ThingsBoard 一起使用的数据库类型。 为了设置数据库类型,将文件中变量的值更改为以下值之一:DATABASE.env​​

  • ​postgres​​- 使用PostgreSQL数据库;
  • ​hybrid​​- 将PostgreSQL用于实体数据库,将Cassandra用于时间序列数据库;

注意:根据数据库类型,将部署相应的 kubernetes 资源(有关详细信息,请参阅 和)。postgres.ymlcassandra.yml​​

如果选择为 ,您还可以配置 Cassandra 节点的数量(配置文件中的属性)和 in 文件。如果要配置,请先阅读 Cassandra 文档。cassandraDATABASEStatefulSet.spec.replicascassandra.ymlCASSANDRA_REPLICATION_FACTOR.envCASSANDRA_REPLICATION_FACTOR​​

建议有 3 个等于 2 的 Cassandra 节点。CASSANDRA_REPLICATION_FACTOR​​

如果测试,不用修改安装脚本,默认使用PostgreSQL数据库

第 4 步,运行安装脚本

执行以下命令运行安装:

./k8s-install-tb.sh --loadDemo
  • ​–loadDemo​​- 可选参数。是否加载其他演示数据。
  • 通过KubeSphere观察pod启动及完成状态,再执行下一步。

image-20230512175902-grj18q0.png

执行以下命令,部署第三方资源。

./k8s-deploy-thirdparty.sh
#通过KubeSphere观察pod启动及完成状态,再执行下一步。

执行以下命令以部署 ThingsBoard 资源:

./k8s-deploy-resources.sh

#通过KubeSphere观察pod启动及完成状态,再执行下一步。

Thingsboard空间内部,容器组全部正常启动

image-20230513112035-p9vs7iu.png

第 5 步,启用入口插件

在KubeSphere开启项目网关,允许被外网访问

KubeSphere 项目中的网关是一个 NGINX Ingress 控制器。KubeSphere 内置的用于 HTTP 负载均衡的机制称为应用路由,它定义了从外部到集群服务的连接规则。如需允许从外部访问服务,用户可创建路由资源来定义 URI 路径、后端服务名称等信息。

KubeSphere 除了提供项目范围的网关外,还提供集群范围的网关,使得所有项目都能共享全局网关。

准备工作

您需要创建一个企业空间、一个项目和一个用户 (project-admin​​​)。该用户必须被邀请至项目,并且在项目中的角色为 admin​​​。有关更多信息,请参见创建企业空间、项目、用户和角色

设置网关
  1. 以 project-admin​​ 用户登录 KubeSphere Web 控制台,进入您的项目,从左侧导航栏进入项目设置下的高级设置页面,然后点击设置网关。
    set-project-gateway
  2. 在弹出的对话框中选择网关的访问方式。
    access-method
    NodePort:通过网关访问服务对应的节点端口。
    LoadBalancer:通过网关访问服务的单独 IP 地址。
  3. 在设置网关对话框,您可以启用应用治理以使用 Tracing 功能和不同的灰度发布策略。如果启用应用治理后无法访问路由,请在路由 (Ingress) 中添加注解(例如 nginx.ingress.kubernetes.io/service-upstream: true​​)。
  4. 选择访问方式后点击保存。

image-20230513112309-pp4fh1e.png

一段时间后,当所有资源都成功启动时,您可以在浏览器中打开。上图中(网关地址+节点端口)
来源 | 知识星球 | 物联网低代码平台的价值

诚邀你共建星球,畅融,共进,同享! 分享数据分析,快速可视化内容; 践行物联网低代码平台多场景应用, 分享开源项目Thingsboard的知识。<免费>

声明:如转载,请注明本文链接,谢谢合作。
在这里插入图片描述

参考资料

  1. KubeSphere 3.3.0 发布:全面拥抱 GitOps:https://kubesphere.io/zh/news/kubesphere-3.3.0-ga-announcement/
  2. 在 Linux 上以 All-in-One 模式安装 KubeSphere:https://kubesphere.io/zh/docs/v3.3/quick-start/all-in-one-on-linux/
  3. thingsboard3.4.4安装参考:基于Minikube集群安装方式: Cluster setup using Minikube | ThingsBoard Community Edition
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐