Kuboard无法正常访问,提示Failed connected database

2 篇文章 0 订阅
1 篇文章 0 订阅

Kuboard无法正常访问,提示Failed connected database

  • 问题:Kuboard无法正常访问
  • 现象:访问kuboard的10080端口时,直接提示无法连接数据库

排查:

1、kuboard采用的是docker run的方式进行部署

docker run -d \
  --restart=unless-stopped \
  --name=kuboard \
  -p 10080:80/tcp \
  -p 10081:10081/udp \
  -p 10081:10081/tcp \
  -e KUBOARD_ENDPOINT="http://10.64.160.132:10080" \
  -e KUBOARD_AGENT_SERVER_UDP_PORT="10081" \
  -e KUBOARD_AGENT_SERVER_TCP_PORT="10081" \
  -v /root/kuboard-data:/data \
  eipwork/kuboard:v3

2、进行查看kuboard的容器日志,是否存在异常报错信息

$ docker logs -f kuboard
......
{"level":"warn","ts":"2022-11-23T11:10:51.655+0800","caller":"clientv3/retry_interceptor.go:62","msg":"retrying of unary invoker failed","target":"endpoint://client-836ca006-9522-4ed1-be2d-196f4c09332f/127.0.0.1:2379","attempt":0,"error":"rpc error: code = ResourceExhausted desc = etcdserver: mvcc: database space exceeded"}
[LOG] 2022/11/23 - 11:10:51.655   | /initializekuboard.processEtcdObject                         142 | error | 更新对象失败: etcdserver: mvcc: database space exceeded
[LOG] 2022/11/23 - 11:10:51.657   | main.main                                                     85 |  info | 使用 http, 端口: 80
......

日志中存在: etcdserver: mvcc: database space exceeded的报错,查看etcd的官方指导,etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务,所以需要定期清理。查看数据映射的空间大小:

[root@Jenkins ~]# cd kuboard-data/etcd-data/member/snap/
[root@Jenkins snap]# ll -h
总用量 1.9G
-rw-r--r-- 1 root root 9.4K 1011 17:00 0000000000000009-0000000000557338.snap
-rw-r--r-- 1 root root 9.4K 1020 10:44 0000000000000009-000000000056f9d9.snap
-rw-r--r-- 1 root root 9.4K 1029 04:29 0000000000000009-000000000058807a.snap
-rw-r--r-- 1 root root 9.4K 116 22:21 0000000000000009-00000000005a071b.snap
-rw-r--r-- 1 root root 9.4K 1115 16:07 0000000000000009-00000000005b8dbc.snap
-rw------- 1 root root 2G 1123 11:39 db

db的大小为2G已经满了!!!!!

3、进入到容器内部进行查看etcd的状态信息

[root@Jenkins etcd-data]# docker exec -it kuboard /bin/sh
 
通过下面命令可以查看ETCD存储使用情况:
/ # ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status
+-----------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+
|       ENDPOINT        |        ID        | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX |             ERRORS             |
+-----------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+
| http://127.0.0.1:2379 | 59a9c584ea2c3f35 |  3.4.14 |  2.1 GB |      true |      false |        11 |    6086544 |            6086544 |   memberID:6460912315094810421 |
|                       |                  |         |         |           |            |           |            |                    |                 alarm:NOSPACE  |
+-----------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------------------------------+

这里的ERRORS已经是提示空间不足的问题了!!!!

4、临时解决etcd存储空间不足的问题

PS: 压缩前做好快照备份,命令 etcdctl snapshot save backup.db

通过 ETCD 数据压缩来临时解决问题,具体如下操作:

#查看ETCD集群报警情况
 
/ # ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" alarm list
memberID:6460912315094810421 alarm:NOSPACE 
 
# 获取当前版本
$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
 
# 压缩所有旧版本
$ ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 compact $rev
 
# 整理多余的空间
$ ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 defrag
 
# 取消告警信息,不取消告警,ectd一样不可用
$ ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 alarm disarm
memberID:6460912315094810421 alarm:NOSPACE 
 
# 测试是否能成功写入
$ ETCDCTL_API=3 etcdctl --endpoints=http://127.0.0.1:2379 put testkey 123
 
OK
 
# 再次查看ETCD存储使用情况
$ ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status

5、最终解决方案

在 ETCD 启动命令中添加下面两个参数:

# 表示每隔一个小时自动压缩一次
--auto-compaction-retention=1
# 磁盘空间调整为 8G,官方建议最大 8G(单位是字节)
--quota-backend-bytes=8388608000

Kuboard(Kubernetes 多集群管理界面,官网地址:https://kuboard.cn),如果有使用过的同学可能会遇到ETCD存储不足的问题,因为官网提供的docker镜像中,ETCD启动参数并没有添加 --auto-compaction-retention 和 --quota-backend-bytes 参数。

修改官网 Kuboard docker镜像 /entrypoint.sh 启动脚本

原文链接https://www.cnblogs.com/linuxk/p/16917804.htmlhttps://www.cnblogs.com/linuxk/p/16917804.html

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值