一、场景描述
用户无法正常访问部署在k8s上的服务和使用我们的PaaS平台。

二、问题描述
某环境的etcd集群全部挂掉,导致k8s集群部署的服务都无法正常提供使用,查看etcd状态和报错日志,如图所示:
图中报错显示etcd成员的空间不足

三、问题处理过程描述
当时根据etcd的报错日志,先到对应的主机查看了下磁盘和内存的使用情况,发现etcd所在的主机资源都是充足的,然后一起重启了下三台etcd,发现还是没能解决,看来万能的重启不能解决了,看看日志还是报etcd成员的空间不足,看了下etcd的官方文档;启动 etcd 时,–quota-backend-bytes 默认为 2G,查看我们etcd集群当前的存储使用情况:
发现etcd的当前存储使用情况已经是2.2G,已经大于2G了,空间配额etcd可确保群集以可靠的方式运行。如果没有空间配额,etcd如果使用空间过大,可能会导致性能不佳,或者可能仅会耗尽存储空间,从而导致不可预测的群集行为。如果任何成员的键空间的后端数据库超出空间配额,etcd则会引发整个群集范围的警报,该警报会将群集置于维护模式,该模式仅接受键读取和删除。只有在释放键空间中足够的空间并对后端数据库进行碎片整理以及清除空间配额警报之后,集群才能恢复正常运行。
这个时候只能通过删除过多的键空间数据并对后端数据库进行碎片整理将使群集重新回到配额限制内:
#get current revision
$ rev=$(ETCDCTL_API=3 etcdctl --endpoints=:2379 endpoint status --write-out=“json” | egrep -o ‘“revision”:[0-9]’ | egrep -o '[0-9].’)
#compact away all old revisions
$ ETCDCTL_API=3 etcdctl compact $rev
compacted revision 1516
#defragment away excessive space
$ ETCDCTL_API=3 etcdctl defrag
Finished defragmenting etcd member[127.0.0.1:2379]
#disarm alarm
$ ETCDCTL_API=3 etcdctl alarm disarm
memberID:13803658152347727308 alarm:NOSPACE
注:分别在三台etcd集群中执行。
执行完发现etcd的空间使用空间已经小于2G了,etcd集群恢复正常:
这个时候其实还没有结束,检查pod报错没有权限,发现集群中所有的node都是notready了,之前是好的:
查看之前的授权admin权限都是在的,重启所有节点的kubelet和proxy,节点全部都恢复正常,检查业务都ok,到此问题处理完成。

注:删除操作前记得对etcd进行快照的备份,etcd的配额大小可以进行配置,需要到etcd.conf文件中添加如下参数:
ETCD_QUOTA_BACKEND_BYTES=“8388608000”(根据自己实际需求来改)

关于etcd的碎片清理和空间配额设置,可以参考etcd的官方文档:https://etcd.io/docs/v3.4/op-guide/maintenance/

etcd成员报空间不足问题处理过程相关推荐

  1. k8s集群部署中etcd启动报错request sent was ignored (cluster ID mismatch: peer[c39bdec535db1fd5]=cdf818194e3a8c

    k8s集群部署中etcd启动报错处理 报错信息如下,主要报错信息有两条 原因是/var/lib/etcd/目录下缓存导致 解决方法 问题2: Error starting daemon: SELinu ...

  2. Sql Server 因为触发器问题导致数据库更新报错“在触发器执行过程中引发了错误,批处理已中止”的问题处理...

    在维护一个非常旧的项目时,由于该项目版本已经非常老了,而且在客户现场运行的非常稳定,更要命的是本人目前没有找到该项目的代码,为了处理一个新的需求而且还不能修改程序代码,于是决定从数据库入手,毕竟该项目 ...

  3. 科研文献|常见豆类根际的持久微生物组成员:空间、时间和植物基因型的综合分析

    ​研究介绍 自然存在的土壤微生物群对实现农业集约化和可持续发展意义重大,管理微生物群落以支持植物健康的全部潜力尚未实现,部分原因是仍然难以确定哪些成员对植物最重要,然而,在不同的田间条件和植物发育过程 ...

  4. 【错误记录】反射时调用方法及成员报错 ( 执行反射方法 | 设置反射的成员变量 | 设置方法/成员可见性 )

    文章目录 一.报错信息 二.解决方案 一.报错信息 在执行反射方法时 , 反射方法后 , 直接调用该方法 ; // 获取 View 的 getListenerInfo 方法 Method getLis ...

  5. 删除数据清理oracle表空间,oracle数据库删除无用表空间及数据文件过程

    应用场景:html 数据库服务器A下的一张数据库表重建过,而且数据已经迁移到新表空间下,现遗留了一些原有的表空间数据文件在服务器上,耗费资源,如图所示: linux 原数据库表对应的数据文件:sql ...

  6. linux:记录一次 处理tomcat启动卡死无报错现象的曲折过程

    一.环境 系统:CentOS 5.5 tomcat 6.0 jdk1.6 二.问题现象     我们公司近期请人做的某个项目的一期要完成了,因对方负责java开发的工程师都不懂linux,而且也没有专 ...

  7. 一个QQ空间的钓鱼盗号过程揭露,大家谨防上当

    1.盗号过程 很久没有用过QQ空间了,今天突然QQ弹出一条消息,说我的一个好友留言中提到了我,但是我却也打不开这个链接. 于是,我就去她的空间留言板查看.发现第一条留言,是一个二维码 扫描之后,进入到 ...

  8. mysql字段超长会报错吗_MySQL使用过程中的报错处理(持续更新)

    MySQL使用过程中的报错处理(持续更新) 一.数据库初始化 1.Percona的MySQL 5.6.20版本数据库初始化 初始化命令(MySQL 5.6版本不适用mysqld命令进行初始化) ./s ...

  9. SAS BASE 9.4 跑数报空间不足提示解决办法(修改默认临时work路径)

    用base跑复杂.数据量大的脚本时,会报C盘空间不足的提示,无法继续进行下去. 解决办法如下: 1.找到SAS安装路径:例我的为"D:\SAS\SASHome\SASFoundation\9 ...

最新文章

  1. startActivityForResult 请求码不正确
  2. 可能是把Docker的概念讲的最清楚的一篇文章
  3. 2022-01-24
  4. Z80 CPU的寄存器结构图示
  5. django 静态数据_如何在Django中使用静态数据?
  6. 修改附图中文字的办法
  7. 印象笔记等App被点名:违法收集公民个人信息
  8. 腾讯联手国家信息中心启动共筑疫情“数据长城”计划
  9. 7-3 DAG图优化-A (15 分)(更新版)
  10. opengles系列-绘制三角形
  11. 离线在远程linux服务器配置vscode-python环境以及在容器中配置
  12. ServletContext的用法
  13. 利用模板导出文件(一)之XLSTransformer导出excel文件
  14. windows环境搭建hadoop
  15. 从“外行”到“里手”,长沙企业“力量矩阵”开始觉醒
  16. win10桌面背景为什么突然变黑了 win10桌面背景不显示解决方法
  17. 使用 NVIDIA Kaolin Wisp 重建3D场景
  18. css深入理解flex布局中的剩余空间分配规则——flex-grow,flex-shrink和flex-basis
  19. Android广播机制Broadcast详解
  20. Cocos2d-x学习(七):cocos2d-x中ScrollView的简单实现

热门文章

  1. python指数运算符_python运算符
  2. 【MYSQL快速入门】case函数
  3. MySQL:case函数和if函数的select用法(超详细)
  4. Nginx配置HTTPS以及HTTPS原理
  5. Spring系列中文文档
  6. Vuex的核心概念 Action
  7. create函数用法
  8. java名侦探柯南游戏大全_孩子们的游戏(圆圈中最后剩下的数),Java代码实现思路分享...
  9. 经典编译器组成(前端+优化器+后端)以及LLVM和Clang简介
  10. 用java写猜拳小游戏