使用docker映像进行Rancher安装。版本v2.2.1。
最近开始获取日志“无法更新锁:etcdserver:mvcc:数据库空间已超出”
检查集群的etcd,我们一切正常。
因此请注意,牧场主docker容器中的etcd db如下所示:
在Directoy内部/ var / lib / rancher / management-state / etcd / member / snap
2.1G Jul 17 22:29 db
但无法压缩或与其交互。
为什么Rancher码头工人映像本身具有etcd数据库?拥有一个集群还不够吗?
以及如何缩小尺寸以解决问题?
预先感谢
答案 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