ETCD连接报错:database space exceeded
ETCD连接报错:database space exceeded
一:背景#
此etcd不是k8s集群中的etcd,是kuboard中使用etcd报错,kuboard稳定运行了一年多,上周还正常访问,今天上班访问kuboard报错,然后顺着排查发现kuboard中使用了etcd(之前一直没注意),查看kuboard日志,发现如下报错信息:
二:报错分析:#
大致意思就是kuboard服务连接ETCD数据库失败,然后复制重点报错信息去google:etcd "database space exceeded",查看了几个网页聚合后得到的信息大致为ETCD存储满了,最开始我以为是ETCD存储的磁盘满了,登陆ETCD服务器df -h后发现空间很充足,然后继续google,发现etcd为了保证性能,设置了空间配额,空间配额默认值(--quota-backend-bytes)为2G,详情见此官方文档和此官方博客,然后通过:etcdctl --write-out=table endpoint status命令查看节点信息如下,发现DB SIZE 已经为2.1G了,默认空间配额为2G, 这里DB SIZE已经超过2G,触发ETCD维护模式,只能进行读和删除操作。包括ERRORS行也告警NOSPACE。
三:解决问题#
-
etcd备份(自行google,此处不叙述)
-
获取当前版本
rev=$(etcdctl endpoint status -w json | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'| awk 'NR==1{print $1}')
- 压缩掉所有旧版本,这里得截图报错是因为我之前已经压缩过。
etcdctl compact $rev
- 清理碎片
etcdctl defrag
- 再次查看节点信息,此时DB SIZE已清理完成,但是告警还在,ETCD还处于维护模式。
etcdctl endpoint status -w table
- 解除告警,然后再次查看节点信息,告警也消失了,恢复正常。
etcdctl alarm disarm
作者:鲜小橙
出处:https://www.cnblogs.com/big-cousin/p/17491262.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!