当前位置: 首页 > 工具软件 > sitewhere > 使用案例 >

SiteWhere 2.0 部署记录

卢作人
2023-12-01

1. 关于持久化数据问题

SiteWhere 2.0内部微服务需要持久化数据,官方部署文档要求使用helm安装sitewhere 2.0 之前先安装rook.io(提供数据卷功能)。在安装好rook,并确认rook的pod都处于“running”后,继续执行部署文档步骤,最后使用下面命令安装sitewhere 2.0:

helm install --name sitewhere sitewhere/sitewhere

在等待接近2个小时后,发现sitewhere 依旧有几个pod无法正常工作,使用kube describe pods xxxx无法定位问题源头。在github上发起了issues请求帮助. 项目管理员非常给力,很快进行了回复。在管理员的帮助下,开始注意查看PVC状态,感觉到问题应该是出在数据卷上,sitewhere的Pod应该是因为无法正常获取PersisteVolume而无法运行。(可能是无法访问到rook提供的数据卷,或者rook并没有正常工作)。转而去查阅kubernetes关于数据卷的概念,内容比较多,看了一些资料有了大致的了解,发现我的k8s 没有默认的StorageClass及对应的PersistentVolume。k8s文档提示可以使用nfs作为PV。于是搭建NFS服务器,将两个目录共享出来,利用了github项目 nfs-client-provisioner将一个目录设为默认StorageClass,命名为“nfs-client”,将另外一个目录命名为standard,使用命令如下,

helm install --set storageClass.defaultClass=true --set nfs.server=x.x.x.x --set nfs.path=/exported/path stable/nfs-client-provisioner
helm install --set storageClass.name=standard  --set nfs.server=x.x.x.x --set nfs.path=/exported/path stable/nfs-client-provisioner

查看集群所有sc

NAME                   PROVISIONER                                             AGE
nfs-client (default)   cluster.local/original-echidna-nfs-client-provisioner   5d16h
rook-ceph-block        ceph.rook.io/block                                      52d
standard               cluster.local/vm-nfs-nfs-client-provisioner             5d18h

sitewhere 2.0 也可以不使用rook,使用其他StorageClass,因此这里替换了rook,helm安装命令类似下面,这里不是最后的完整启动命令,因为本集群不提供 loadbalancer服务。

helm install --name sitewhere --set persistence.storageClass=SC_name sitewhere/sitewhere

2. 本地集群无loadbalancer问题

在sitewhere 2.0 github页面发起issues,获知可以用NodePort代替LoadBalancer。最终启动命令如下:

helm install --name sitewhere \
--set infra.mosquitto.service.type=NodePort \
--set services.web_rest.service.http.type=NodePort \
--set persistence.storageClass=nfs-client \
sitewhere/sitewhere

终于,所有pod处于running状态。

3. 删除sitewhere

注意:将sitewhere替换为实际名字。

helm del sitewhere --purge
kubectl delete pvc -l release=sitewhere
 类似资料: