解决Kuboard etcd 空间超过2G后无法访问问题
Kuboard突然无法访问,使用kubernetes运行的kuboard
参考:
排查问题
查看日志信息
通过查看pod日志看到错误信息为:etcdserver: mvcc: database space exceeded。
查看etcd的官方指导,etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务。
kuboard会自己创建一个基于eipwork/etcd-host镜像的etcd DaemonSet。
查看数据映射的空间大小
查看kuboard下的etcd映射的存储路径,默认在/usr/share/kuboard/etcd
[root@master1 snap]# cd /usr/share/kuboard/etcd/member/snap
[root@master1 snap]# ls -lrth
总用量 2.1G
-rw-r--r-- 1 root root 11K 9月 26 20:16 000000000000000b-0000000000a1c264.snap
-rw-r--r-- 1 root root 11K 9月 27 08:11 000000000000000b-0000000000a1e975.snap
-rw-r--r-- 1 root root 11K 9月 27 20:06 000000000000000b-0000000000a21086.snap
-rw-r--r-- 1 root root 11K 9月 28 08:01 000000000000000b-0000000000a23797.snap
-rw-r--r-- 1 root root 11K 9月 28 19:56 000000000000000b-0000000000a25ea8.snap
-rw------- 1 root root 2.1G 9月 29 14:32 db
可以看到文件已经达到2.1G,基本可以确定是因为达到空间配额限制,无法正常启动。
临时解决方案
进入etcd容器,执行压缩命令,整理多余空间,取消告警信息
此时etcd容器因存活检测一直在重启,修改存活检测时长
kubectl edit daemonsets.apps -n kuboard kuboard-etcd
# 将 initialDelaySeconds 修改为3000
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: 2381
scheme: HTTP
initialDelaySeconds: 30
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
# 在master节点通过命令进入etcd容器,pod名称替换成自己的
kubectl -n kuboard exec -it kuboard-etcd-6x8jf sh
# 端口自行查看 (不建议使用 127.0.0.1 使用 master 的网卡IP地址)
# 查看etcd的状态
ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" --write-out=table endpoint status
# 可以看到error信息中有一条警告信息:alarm:NOSPACE
# 压缩旧版本
ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" compact $(ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
# 整理多余的空间
ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" defrag
# 取消告警信息(之前有nospace的告警)
ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" alarm disarm
# 重新查看etcd的状态(发现ERROR字段已为空)
ETCDCTL_API=3 etcdctl --endpoints="192.168.2.81:2381" --write-out=table endpoint status
# ERROR信息为空,且DB SIZE 已小于2G则表示成功
手动构建镜像
找到etcd镜像的github地址,通过手动构建镜像时修改DockerFile文件中的启动命令
# 表示每隔一个小时自动压缩一次
--auto-compaction-retention=1
# 磁盘空间调整为 8G,官方建议最大 8G(单位是字节)
--quota-backend-bytes=8388608000
标签:etcdserver,database,--,无法访问,2381,etcd,snap,kuboard,root
From: https://www.cnblogs.com/yg0070/p/18439916