k8sapiserver组件重启失败,通过journalctl -xeu kube-apiserver命令查看日志,找到了如下的报错

etcdserver: mvcc: database space exceeded

查看节点状态

这里,我们需要用到etcdctl工具,一般二进制部署的k8s,都会带有这个工具,如果没有,可以去github下载指定版本的etcd二进制文件即可

通过etcdctl version查看当前API版本,以下的命令,需要使用API 3版本,如果不是API 3版本,需要在执行etcdctl前加上参数,示例:ETCDCTL_API=3 etcdctl endpoint status

如果etcd--listen-client-urls参数有配置http://127.0.0.1:2379,以下的命令可以不加上--endpoints参数,如果需要加上--endpoints参数,就需要加上指定的证书路径

通过systemctl status etcd -l可以看到etcd启动时所带的参数,可以找到指定的证书路径,下面的证书路径,以自己实际的为准,不要纯复制黏贴

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
endpoint status --write-out="table"

--write-out="table"是输出的格式,可以是json,可以是table,默认是simple,这个参数可以不加

ENDPOINT ID VERSION DB SIZE IS LEADER IS LEARNER RAFT TERM RAFT INDEX RAFT APPLIED INDEX ERRORS
https://172.31.243.179:2379 f0a399bcc03bea5f 3.4.12 6.4GB true false 5 29659523 29659523  

可以看到,这里的db size已经达到6.4G,在etcd启动的时候,如果没有配置--quota-backend-bytes的大小,默认只有2G,因此,导致了apiserver无法写入etcd

获取旧版本号

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
endpoint status --write-out="json" | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'

15151255

得到的这个数据值,就是当前的版本号,当我们压缩的时候,他就变成旧版本号了

压缩旧版本

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
compact 15151255

清理碎片

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
defrag

再次查看节点状态

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
endpoint status
https://172.31.243.179:2379, f0a399bcc03bea5f, 3.4.12, 1.0 MB, true, false, 5, 29659523, 29659523,

db size这一块,变成了1.0MB了

清楚告警

查看告警

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
alarm list
memberID:f0a399bcc03bea5f alarm:NOSPACE

清楚告警

ETCDCTL_API=3 etcdctl \
--cacert=/etc/kubernetes/cert/ca.pem \
--cert=/etc/kubernetes/cert/etcd.pem \
--key=/etc/kubernetes/cert/etcd-key.pem \
--endpoints=https://172.31.243.179:2379 \
alarm disarm

然后再次重启我的apiserver

他来了,他来了,他活过来了,不用跑路的感觉,真好

etcdserver: mvcc: database space exceeded的更多相关文章

  1. 二进制部署kubernetes集群_kube-apiserver提示"watch chan error: etcdserver: mvcc: required revision has been compacted'

    查看kube-apiserver状态 [root@yxz-cluster01 ~]# systemctl status kube-apiserver -l ● kube-apiserver.servi ...

  2. ETCD数据空间压缩清理

    场景:做etcd数据镜像的时候出现如下错误  Error: etcdserver: mvcc: database space exceeded 通过查找官方文档https://coreos.com/e ...

  3. 什么是Etcd?

    文章大部分引至:http://jolestar.com/etcd-architecture/ Etcd 按照官方介绍 Etcd is a distributed, consistent key-val ...

  4. Oracle 11gR2 Database UNDO表空间使用率居高不下-转载

    客户的数据库是Oracle Database 11.2.0.3.0 for AIX 6.1 64bit的单机数据库.客户查询DBA_FREE_SPACE发现UNDO表空间的使用率高达98%以上.客户的 ...

  5. [转载]——Automatic Tuning of Undo_retention Causes Space Problems (文档 ID 420525.1)

    Automatic Tuning of Undo_retention Causes Space Problems (文档 ID 420525.1) 转到底部 In this Document   Sy ...

  6. Any changes made by a writer will not be seen by other users of the database until the changes have been completed

    https://en.wikipedia.org/wiki/Multiversion_concurrency_control Multiversion concurrency control (MCC ...

  7. 【翻译自mos文章】rman 备份时报:ORA-02396: exceeded maximum idle time

    rman 备份时报:ORA-02396: exceeded maximum idle time 參考原文: RMAN backup faling with ORA-02396: exceeded ma ...

  8. ORACLE:profile的管理

    PROFILE的管理(资源文件)      当需要设置资源限制时,必须设置数据库系统启动参数RESOURCE_LIMIT,此参数默认值为FALSE      可以使用如下命令来启动当前资源限制:    ...

  9. 四、oracle 用户管理(Profile)

    oracle 用户管理 :profile + tablespace + role + user  一.使用profile管理用户口令概述:profile是口令限制,资源限制的命令集合,当建立数据库时, ...

随机推荐

  1. Word合并多文档

    图片如果损坏,点击链接: https://www.toutiao.com/i6489785099528176142/ 很多时候,我们需要将两个或者多个文档的内容,放到一起,而最直接的办法就是将多个文档 ...

  2. Could not find resource mybatis.xml 找不到mybatis主配置文件的三种解决方式

    第一种:先清除target目录 再重新compile编译 第二种:让idea重构项目 第三种 :手动添加到target目录下的classes包下

  3. 还在用visio?这款画图工具才是真的绝!

    最近有读者私信我,问我推文的配图是用什么工具画的,很好看,也想学习一下.今天就给大家介绍一下这款画图工具--Draw.io 概述 draw.io是一款免费的网页版画图工具(也有桌面版),支持流程图.U ...

  4. JDK8 一文搞定👍

    ! https://zhuanlan.zhihu.com/p/442182870 Java8 新特性 学习来源于 B站 尚硅谷yyds Java学习源码 2021/11/22 距离,过年还有 57 天 ...

  5. C#语言类型

    讨论 所有类型在,值类型,引用类型用new创建,值类型由编译器自动补全 int等引用类型是轻量化结构更像是结构体 值类型在栈中,引用类型在堆中 所有类型由类派生,可以说每个是对象,也可以不是 由于.N ...

  6. centos,fedora,ubuntu,opensuse感想

    最先接触的是ubuntu,貌似身边同学用的最多,出了什么问题,网上解决方法也很多,但是后来学鸟哥私房菜,就按照他说的在实验室电脑装了一个centos,果然为服务器而生,稳定得很,界面朴素,装日常软件比 ...

  7. 科技爱好者周刊(第 175 期):知识广度 vs 知识深度

    这里记录每周值得分享的科技内容,周五发布. 本杂志开源(GitHub: ruanyf/weekly),欢迎提交 issue,投稿或推荐科技内容. 周刊讨论区的帖子<谁在招人?>,提供大量程 ...

  8. 深入理解 React 的 Virtual DOM

    React在前端界一直很流行,而且学起来也不是很难,只需要学会JSX.理解State和Props,然后就可以愉快的玩耍了,但想要成为React的专家你还需要对React有一些更深入的理解,希望本文对你 ...

  9. 社交网络分析的 R 基础:(二)变量与字符串

    本章会从 R 语言中最基本的数据类型开始介绍,在此之后就可以开始 R 语言实践了.对社交网络分析而言,我们在处理字符串上所花费的时间要远远大于处理数字的时间,因此本章还会介绍常用的字符串处理操作. 变 ...

  10. Redis 源码简洁剖析 05 - ziplist 压缩列表

    ziplist 是什么 Redis 哪些数据结构使用了 ziplist? ziplist 特点 优点 缺点 ziplist 数据结构 ziplist 节点 pre_entry_length encod ...