kuboard报错etcd无法访问 etcd 容量 大于 2G 导致报错了 etcdserver: mvcc: database space exceeded
文章目录
- 问题:
- 临时解决方案
- 永久解决方案
- tips:
问题:
[GIN] 2025/11/10 - 11:14:48 | 200 | 7.614477ms | 172.25.16.91 | GET “/kuboard-resources/version.json”
{“level”:“warn”,“ts”:“2025-11-10T11:14:52.816+0800”,“caller”:“clientv3/retry_interceptor.go:61”,“msg”:“retrying of unary invoker failed”,“target”:“endpoint://client-a37edc5c-e6d6-4aab-819e-ff057e258167/172.25.16.91:2381”,“attempt”:0,“error”:“rpc error: code = ResourceExhausted desc = etcdserver: mvcc: database space exceeded”}
time=“2025-11-10T03:14:52Z” level=error msg=“Storage health check failed: create auth request: etcdserver: mvcc: database space exceeded”
[GIN] 2025/11/10 - 11:14:58 | 200 | 250.603µs | 172.25.16.91 | GET “/kuboard-resources/version.json”
临时解决方案
修改镜像重启时间,用来导出etcd镜像的启动脚本
kubectl edit daemonsets.apps -n kuboard kuboard-etcd

kubectl get pods -n kuboard -o wide |grep kuboard

# 在master节点通过命令进入etcd容器,pod名称替换成自己的
kubectl -n kuboard exec -it kuboard-etcd-6k9ch /bin/sh# 端口自行查看 (使用 master 的网卡IP地址)
# 默认二进制安装etcd端口为2379和2380端口
# kuboard的etcd端口为2381和2382端口
# 查看etcd的状态
ETCDCTL_API=3 etcdctl --endpoints="172.25.16.91:2381" --write-out=table endpoint status# 压缩旧版本
ETCDCTL_API=3 etcdctl --endpoints="172.25.16.91:2381" compact $(ETCDCTL_API=3 etcdctl --endpoints="172.25.16.91:2381" endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')# 整理多余的空间
ETCDCTL_API=3 etcdctl --endpoints="172.25.16.91:2381" defrag# 取消告警信息
ETCDCTL_API=3 etcdctl --endpoints="172.25.16.91:2381" alarm disarm
到此时服务已经正常使用了
永久解决方案
永久解决需要修改镜像的启动配置,要先完成临时解决方案在来永久解决
kubectl get pods -n kuboard -o wide |grep kuboard

复制etcd启动配置文件到本地
kubectl cp -n kuboard kuboard-etcd-6k9ch:docker-entrypoint.sh ./docker-entrypoint.sh
修改启动配置文件,在最后面添加

etcd --name ${HOSTNAME} \--listen-peer-urls http://${HOSTIP}:2382 \--listen-client-urls http://${HOSTIP}:2381 \--advertise-client-urls http://${HOSTIP}:2381 \--initial-advertise-peer-urls http://${HOSTIP}:2382 \--initial-cluster-token kuboard-etcd-cluster-1 \--initial-cluster ${PEERS} \--initial-cluster-state new \--snapshot-count=10000 \--log-level=info \--logger=zap \--data-dir /data \--quota-backend-bytes=8589934592 \--auto-compaction-mode=periodic \--auto-compaction-retention=1
使用Dockerfile制作etcd镜像
# 我的仓库地址是私有环境,修改对应的镜像地址即可
cat > Dockerfile << EOF
FROM 172.25.16.26/kuboard/etcd-host:3.4.16-2
ENV TZ=Asia/Shanghai
WORKDIR /
COPY ./docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
CMD ["/bin/sh", "/docker-entrypoint.sh"]
EOF# 打包镜像 , 我修改为 3.4.16-4 了
docker build -t 172.25.16.26/kuboard/etcd-host:3.4.16-4 .# 推送镜像
docker push 172.25.16.26/kuboard/etcd-host:3.4.16-4
编辑 vim kuboard-v3.yaml 文件切换镜像地址

# 重新载入到集群
kubectl apply -f kuboard-v3.yaml
tips:
参考文档:
https://github.com/eip-work/kuboard-press/issues/526
