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

    • Kubernetes 学习笔记
      • 集群搭建

        • 使用 ansible 快速搭建 k8s 集群
        • 常见应用安装配置

          • Harbor 安装配置(k8s)
            • Harbor 高可用搭建(docker-compose)
              • Rancher 安装配置
                • Helm 安装配置
                • 容器运行时

                  • k8s 适配 GPU
                    • Kata2 尝试
                    • 存储

                      • Longorn 安装配置
                        • 使用 Rook 快速搭建 Ceph 集群
                        • 服务发现与路由

                          • ingress-nginx 安装配置
                          • 集群网络

                            • CNI
                              • Calico
                              • 监控告警

                                • Prometheus Operator 安装配置
                                • 实用技巧

                                  • 运维手册

                                    • etcd 备份恢复
                                      • velero 备份恢复
                                        • k8s 开启审计日志
                                          • 内核版本升级
                                            • 使用 kubeadm 手动更新证书
                                              • 为 k8s node 配置资源预留
                                                • 利用LXCFS提升容器资源可见性
                                                • 最佳实践

                                                  • k8s node 配置资源预留
                                                    • 性能压测指标及方法
                                                      • CPU 绑核
                                                      • 集群排障

                                                        • 如何更新Terminating状态的命名空间
                                                          • 卸载 rancher 导致 node 被清空
                                                            • lvs 健康检查 k8s apiserver
                                                              • k8s 更改apiserver使用强加密算法
                                                              • 教程|项目|博客|文章推荐
                                                                • 附录

                                                                  • 快捷命令

                                                                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 © 2023 Clay