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

本文介绍Kuboard界面访问异常的原因分析及解决方法。针对ETCD存储空间不足的问题,提供临时及长期解决方案,包括数据压缩、参数调整等步骤。

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

### STM32烧录提示 `No target connected` 解决方法 在使用 STM32 进行烧录时,出现 `No target connected` 的提示,通常与硬件连接、ST-Link 版本、芯片配置文件错误等因素有关。以下是针对该问题的详细解决方法: #### 1. 检查硬件连接 确保 STM32 与 ST-Link 之间的接线正确。常见的错误是接线不正确,例如 SWCLK 和 SWDIO 引脚接反。正确的接线方式如下: - ST-Link 的 `SWCLK` 引脚连接到 STM32 的 `SWCLK` 引脚。 - ST-Link 的 `SWDIO` 引脚连接到 STM32 的 `SWDIO` 引脚。 - ST-Link 的 `GND` 引脚连接到 STM32 的 `GND` 引脚。 如果接线错误,可能导致无法连接目标芯片,从而出现 `No target connected` 的提示 [^3]。 #### 2. 更新 ST-Link 固件 ST-Link 的固件版本过低也可能导致无法连接目标芯片。可以通过以下步骤更新 ST-Link 固件: 1. 找到安装路径中的 `ARM\STLink` 文件夹。 2. 双击运行 `ST-LinkUpgrade.exe` 文件。 3. 在更新过程中,确保拔掉杜邦线,否则可能出现 `st-link is not in the DFU mode` 的问题。 更新完成后,重新连接 ST-Link 和 STM32,检查是否能够正常连接 [^3]。 #### 3. 使用 STM32 ST-LINK Utility 擦除芯片 如果之前烧录了错误的配置文件,可能会导致芯片无法被识别。可以通过 STM32 ST-LINK Utility 对芯片进行擦除,具体步骤如下: 1. 下载并安装 STM32 ST-LINK Utility。 2. 打开 STM32 ST-LINK Utility,并使用 ST-Link 连接单片机。 3. 连接时长按 RESET 键不松,然后单击软件中的 `Connect to the target`。 4. 点击后 1~2 秒松开单片机上的 RESET 键,如果连接成功,软件界面会显示相关信息。 5. 单击 `Full chip erase`,对芯片进行擦除。 完成擦除后,重新烧录正确的程序,检查芯片是否恢复正常 [^4]。 #### 4. 检查开发板是否损坏 如果以上方法均无法解决问题,可能是开发板损坏或芯片被“锁死”。可以尝试以下方法: - 使用其他开发板进行测试,确认是否为硬件问题。 - 检查芯片的电源和复位电路是否正常。 - 如果芯片被锁死,可以尝试使用 `stm32 ST-LINK Utility` 的 `Option Bytes` 功能,重置芯片配置。 ### 示例代码:STM32 ST-LINK Utility 擦除芯片 以下是一个简单的代码示例,展示如何使用 STM32 ST-LINK Utility 擦除芯片: ```python # 该代码仅为示例,实际操作需通过 STM32 ST-LINK Utility 进行 def erase_chip(): print("Starting chip erase process...") # 模拟连接到目标芯片 connect_to_target() # 模拟全芯片擦除 full_chip_erase() print("Chip erase completed successfully.") def connect_to_target(): print("Connecting to the target...") def full_chip_erase(): print("Erasing the entire chip...") ``` ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值