Rancher Etcd内部数据库无法清理

时间:2019-07-18 09:11:47

标签: kubernetes rancher etcd

使用docker映像进行Rancher安装。版本v2.2.1。

最近开始获取日志“无法更新锁:etcdserver:mvcc:数据库空间已超出”

检查集群的etcd,我们一切正常。

etcd status

因此请注意,牧场主docker容器中的etcd db如下所示:

在Directoy内部/ var / lib / rancher / management-state / etcd / member / snap

2.1G Jul 17 22:29 db

但无法压缩或与其交互。

为什么Rancher码头工人映像本身具有etcd数据库?拥有一个集群还不够吗?

以及如何缩小尺寸以解决问题?

预先感谢

1 个答案:

答案 0 :(得分:1)

与rancher / rancher:stable(997af25b7b54)的单节点安装相同。 您可以在与牧场主相同的Docker主机上的服务容器中运行etcdctl:

docker run --net=container:<NAME_OF_RANCHER_CONTAINER> -id --name etcd-utility rancher/rke-tools:v0.1.40

然后,因为您使用的是rancher容器中的网络,所以此处的localhost输出是指rancher容器。

docker exec etcd-utility etcdctl member list
8e9e05c52164694d: name=default peerURLs=http://localhost:2380
clientURLs=http://localhost:2379 isLeader=true

现在,当附加到etcd-utils容器时,您可以像这样解决etcd的问题(不粘贴任何输出):

host# docker exec -it etcd-utility bash

bash-4.4# export ETCDCTL_API=3
bash-4.4# etcdctl endpoint status --endpoints=$(etcdctl member list | cut -d, -f5 | sed -e 's/ //g' | paste -sd ',') --write-out table
bash-4.4# etcdctl compact `etcdctl endpoint status --write-out json | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'`
bash-4.4# etcdctl defrag  `etcdctl endpoint status --write-out json | egrep -o '"revision":[0-9]*' | egrep -o '[0-9]*'`
bash-4.4# etcdctl alarm list
bash-4.4# etcdctl alarm disarm

后者遵循集群etcd的etcd故障排除指南,该指南在rancher文档etcd-space-errors中进行了详细说明。对于单节点,请参见links in this comment