searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

ETCD异常处理:etcdserver: mvcc: database space exceeded

2023-08-28 06:18:02
72
0

一、现象

创建k8s集群集群创建失败,部署节点提示错误:

{"error":"etcdserver: mvcc: database space exceeded"} 
企业微信截图_16921483976368.png
 

二、排查过程

登录对应节点上查看etcd状态

/ # ETCDCTL_API=3 etcdctl --write-out=table endpoint status
+----------------+------------------+---------+---------+-----------+-----------+------------+
|    ENDPOINT    |        ID        | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+----------------+------------------+---------+---------+-----------+-----------+------------+
| 127.0.0.1:2379 | 6498a916c4220b9a |   3.3.8 |  2.1 GB |      true |         7 |      12567 |
+----------------+------------------+---------+---------+-----------+-----------+------------+
/ # 

发现 DB SIZE为2.1GB 已经超过默认限制(默认限制 2G),所以导致出现上述异常,需要手动去清理并释放空间。

 

注:存储空间配额可以理解为 ETCD 数据库大小,默认限制 2G(推荐最大 8G)。当数据写入耗尽存储空间时,ETCD 会引发整个集群范围的警告,导致集群切换为维护模式( 仅接受键值读取和删除,不支持写入)。所以,在创建集群时候建议修改配额大小在主机内存的 60% - 70%。

 

三、解决方案

手动释放配额空间后重发订单

1、获取当前的版本

$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')

2、压缩当前版本之前的所有记录

$ ETCDCTL_API=3 etcdctl compact $rev

compacted revision 1516

3、清理多余的碎片空间

$ ETCDCTL_API=3 etcdctl defrag

Finished defragmenting etcd member[127.0.0.1:2379]

4、解除警告

$ ETCDCTL_API=3 etcdctl alarm disarm

memberID:13803658152347727308 alarm:NOSPACE

 

 

 

 

 

0条评论
0 / 1000
程****刚
8文章数
0粉丝数
程****刚
8 文章 | 0 粉丝
原创

ETCD异常处理:etcdserver: mvcc: database space exceeded

2023-08-28 06:18:02
72
0

一、现象

创建k8s集群集群创建失败,部署节点提示错误:

{"error":"etcdserver: mvcc: database space exceeded"} 
企业微信截图_16921483976368.png
 

二、排查过程

登录对应节点上查看etcd状态

/ # ETCDCTL_API=3 etcdctl --write-out=table endpoint status
+----------------+------------------+---------+---------+-----------+-----------+------------+
|    ENDPOINT    |        ID        | VERSION | DB SIZE | IS LEADER | RAFT TERM | RAFT INDEX |
+----------------+------------------+---------+---------+-----------+-----------+------------+
| 127.0.0.1:2379 | 6498a916c4220b9a |   3.3.8 |  2.1 GB |      true |         7 |      12567 |
+----------------+------------------+---------+---------+-----------+-----------+------------+
/ # 

发现 DB SIZE为2.1GB 已经超过默认限制(默认限制 2G),所以导致出现上述异常,需要手动去清理并释放空间。

 

注:存储空间配额可以理解为 ETCD 数据库大小,默认限制 2G(推荐最大 8G)。当数据写入耗尽存储空间时,ETCD 会引发整个集群范围的警告,导致集群切换为维护模式( 仅接受键值读取和删除,不支持写入)。所以,在创建集群时候建议修改配额大小在主机内存的 60% - 70%。

 

三、解决方案

手动释放配额空间后重发订单

1、获取当前的版本

$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')

2、压缩当前版本之前的所有记录

$ ETCDCTL_API=3 etcdctl compact $rev

compacted revision 1516

3、清理多余的碎片空间

$ ETCDCTL_API=3 etcdctl defrag

Finished defragmenting etcd member[127.0.0.1:2379]

4、解除警告

$ ETCDCTL_API=3 etcdctl alarm disarm

memberID:13803658152347727308 alarm:NOSPACE

 

 

 

 

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0