Skip to content
SRE运维进阶之路SRE运维进阶之路
github icon
  • kubernetes

    • Kubernetes 学习笔记
      • 集群搭建

        • /cloudnative/kubernetes/cicd
          • /cloudnative/kubernetes/first
          • 集群网络

            • /cloudnative/kubernetes/cicd
              • /cloudnative/kubernetes/first
              • 运维手册

                • /cloudnative/kubernetes/cicd
                  • /cloudnative/kubernetes/first
                  • 故障排查

                    • /cloudnative/kubernetes/cicd
                      • /cloudnative/kubernetes/first

                    ETCD 磁盘空间爆满解决方案

                    author iconClaycalendar icon2022年1月26日category icon
                    • 云原生
                    tag icon
                    • etcd
                    timer icon大约 2 分钟

                    此页内容
                    • 查看集群状态
                    • 增加etcd的容量
                    • 压缩老数据
                    • 解除告警
                    • 验证可以添加新数据

                    # ETCD 磁盘空间爆满解决方案

                    etcd默认的空间配额限制为2G,超出空间配额限制就会影响服务,所以需要定期清理

                    # 查看集群状态

                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 --write-out=table endpoint status
                    
                    1

                    查看ETCD集群报警情况

                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 alarm list
                    
                    1

                    输出为:

                    meberID:XXXXXXXXXXXXXXX alarm:NOSPACE
                    
                    1

                    此处 alarm 提示 NOSPACE,需要升级 ETCD 集群的空间(默认为2G的磁盘使用空间),或者压缩老数据,升级空间后,需要使用 etcd命令,取消此报警信息,否则集群依旧无法使用

                    # 增加etcd的容量

                    修改 etcd.yaml 文件,由2G-->8G,增加以下三个参数

                    - --auto-compaction-mode=revision
                    - --auto-compaction-retention=1000
                    - --quota-backend-bytes=8589934592
                    
                    1
                    2
                    3

                    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=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9].*')
                    echo $rev
                    
                    1
                    2
                    • 整合压缩旧版本数据
                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 compact $rev
                    
                    1
                    • 执行碎片整理
                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 defrag
                    
                    1

                    # 解除告警

                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 alarm disarm
                    
                    1

                    # 验证可以添加新数据

                    ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key --endpoints=https://10.100.142.163:2379 put newkeytestfornospace 123
                    
                    1

                    ⚠️ auto compact只会压缩key space,不会释放物理存储空间。所以需要定期的执行defrag

                    edit icon编辑此页open in new window
                    上次编辑于: 2022/4/27 15:33:00
                    贡献者: clay-wangzhi
                    备案号:冀ICP备2021007336号
                    Copyright © 2022 Clay