跳到主要内容

其他问题

本文介绍 Rainbond 在使用过程中遇到的问题以及解决方法。

磁盘空间不足

磁盘空间超 80% 时,应用无法正常部署

当磁盘根分区空间超过 80% 时,Kubernetes 会自动进入驱逐状态,所有的 Pod 都会被驱逐,届时 Rainbond 将无法正常工作,需要清理磁盘空间。

清理 Docker 不再使用的资源:

docker system prune

清理 Rainbond 镜像仓库存储的镜像,如果你采用的是 Rainbond 默认提供的镜像仓库,可参阅 清理 rbd-hub 镜像

磁盘有空间,存储不足

服务器系统磁盘还有足够的空间,而在 Rainbond 上查看存储时,磁盘已经不足。这是因为 Rainbond 会默认创建一个 nfs-provisioner,用于动态创建 PVC,而这个 nfs-provisioner 会固定在某一个节点上,默认的存储目录是 /opt/rainbond

查询 nfs-provisioner 所在的节点:

$ kubectl get pod -l name=nfs-provisioner -n rbd-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nfs-provisioner-0 1/1 Running 1 (13h ago) 6d21h 10.42.0.228 192.168.3.33 <none> <none>

查看 nfs-provisioner 的存储目录:

du -sh /opt/rainbond

你可以为 /opt/rainbond 目录增加磁盘空间,或者通过软链接的方式将 /opt/rainbond 挂载到其他磁盘上。

Nacos 获取不到配置

在使用 Nacos 作为配置中心时,如果遇到获取不到配置的情况,即得到的配置为 null,则可能是因为 RainBond 和 Nacos 都使用了租户的概念,共用了环境变量 TENANT_ID 导致的。 可通过如下方式来解决:

  • 首选方案:设置 isUseCloudNamespaceParsing 为 false 。isUseCloudNamespaceParsing 可以是配置项、JVM 参数或环境变量。
  • 其次方案:设置 nacos.use.cloud.namespace.parsing 为 false 。nacos.use.cloud.namespace.parsing 可以是配置项、JVM 参数或环境变量。

如果你使用 Spring Cloud Alibaba Nacos,则可以使用如下配置方式:

spring:
cloud:
nacos:
server-addr: 127.0.0.1:8848
discovery:
# 禁用云命名空间解析,防止和 RainBond 提供 TENANT_ID 环境变量冲突
isUseCloudNamespaceParsing: false
config:
# 禁用云命名空间解析,防止和 RainBond 提供 TENANT_ID 环境变量冲突
isUseCloudNamespaceParsing: false

更多分析细节,详见 RainBond 中获取不到 Nacos 配置 - 深度分析

历史日志存储不足

默认情况下,每个组件默认只会保存 10M 大小的历史日志,如果你需要保存更多的历史日志,可以通过修改组件的环境变量 LOG_MAX_SIZE 来设置,默认单位为 MB。

kubectl edit rbdcomponent rbd-eventlog -n rbd-system
spec:
env:
- name: LOG_MAX_SIZE
value: 20