今晚突然出现kuboard无法访问错误,通过查看日志,出现大量以下错误:
{"level":"warn","ts":"2024-12-02T20:19:38.958+0800","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker failed","target":"endpoint://client-cb668178-4c91-4741-aacb-826006fc2308/127.0.0.1:2379","attempt":0,"error":"rpc error: code = ResourceExhausted desc = etcdserver: mvcc: database space exceeded"}
time="2024-12-02T12:19:38Z" level=error msg="Storage health check failed: create auth request: etcdserver: mvcc: database space exceeded"
通过此错误判断了下是是 etcd 的空间满了,因为 kuboard 默认也是使用 ETCD 数据的是2g,kuboard 开发者没对 ETCD 存储空间做调整,那么应该就是超过了 2G,而我也没做定时清理 kuboard 审计日志,就导致此问题出现的。
该错误表明您的 etcd 数据库已经达到存储空间限制(etcdserver: mvcc: database space exceeded)。这通常是由于 etcd 数据库存储容量已满或写入操作导致的。 |
# 进入容器内部 docker exec -it kuboard /bin/sh # 查看 etcd 当前状态 ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --write-out=table endpoint status #ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 endpoint status --write-out="json" # 获取当前revision rev=$(ETCDCTL_API=3 etcdctl--endpoints="http://127.0.0.1:2379"endpointstatus--write-out="json"|egrep-o'"revision":[0-9]*'|egrep-o'[0-9].*') # echo $rev 6078532 # 以$rev为基准,压缩历史数据: 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 #ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" --command-timeout=180s defrag # 解除报警 ETCDCTL_API=3 etcdctl --endpoints="http://127.0.0.1:2379" alarm disarm |
# 1.获取当前的版本 ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*' # 2压缩当前版本之前的所有记录 # etcdctl --endpoints=<ENDPOINT> compact <revision> ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 compact 6078532 # 3、清理多余的碎片空间 ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 defrag # 4.解除警告 ETCDCTL_API=3 etcdctl --endpoints=127.0.0.1:2379 alarm disarm |
默认情况下,etcd 的存储限制为 2GB。如果你需要存储更多数据,可以增大存储限制(仅适用于 etcd v3.4+):
etcd --quota-backend-bytes=<BYTES> |
例如,将配额增加到 8GB:
etcd --quota-backend-bytes=$((8*1024*1024*1024)) |
注意:更改此值前,需要检查系统的磁盘空间是否足够。 在 |