etcd磁盘满解决方案
Etcd 磁盘空间爆满解决方案
以下文章来源于SRE运维进阶之路 ,作者clay
SRE运维进阶之路.
专注于 SRE 运维、云原生、稳定性、高可用性、可观测性、DevOps 等技术
Etcd 磁盘空间爆满解决方案
etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务,所以需要定期清理
设置环境变量
ETCD_CA_CERT="/etc/kubernetes/pki/etcd/ca.crt"ETCD_CERT="/etc/kubernetes/pki/etcd/server.crt"ETCD_KEY="/etc/kubernetes/pki/etcd/server.key"HOST_1=https://xxx.xxx.xxx.xxx:2379
查看集群状态
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" --write-out=table endpoint status
查看ETCD集群报警情况
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" alarm list
输出为:
meberID:XXXXXXXXXXXXXXX alarm:NOSPACE
此处
alarm
提示NOSPACE
,需要升级 ETCD 集群的空间(默认为2G的磁盘使用空间),或者压缩老数据,升级空间后,需要使用 etcd命令,取消此报警信息,否则集群依旧无法使用
解决方案一:增加etcd的容量
修改 etcd.yaml 文件,由2G-->8G,增加以下三个参数
- --auto-compaction-mode=revision- --auto-compaction-retention=1000- --quota-backend-bytes=8589934592
auto-compaction-mode=revision 按版本号压缩
auto-compaction-retention=1000 保留近1000个revision,每5分钟自动压缩 ”latest revision” - 1000
quota-backend-bytes 设置etcd最大容量为8G
修改后重启
解决方案二:压缩老数据清理
压缩老数据
-
获取当前etcd数据的修订版本(revision)
rev=$(ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')echo $rev
-
整合压缩旧版本数据
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" compact $rev
-
执行碎片整理
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" defrag
解除告警
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" alarm disarm
验证可以添加新数据
ETCDCTL_API=3 etcdctl --cacert="${ETCD_CA_CERT}" --cert="${ETCD_CERT}" --key="${ETCD_KEY}" \ --endpoints="${HOST_1}" put newkeytestfornospace 123
k8s技术圈
专注容器、专注 kubernetes 技术......
公众号
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-12-10 docker之网络命名空间
2021-12-10 如何进入docker网络命名空间
2021-12-10 轻松理解 Docker 网络虚拟化基础之 veth 设备!
2021-12-10 go切片删除一个值,得到一个新值
2019-12-10 FinalShell SSH工具,服务器管理,远程桌面加速软件,支持Windows,macOS,Linux,版本3.0.5,更新时间2019.12. 8
2018-12-10 k8s部署prometheus
2018-12-10 误删除 linux 系统文件了?这个方法教你解决