如何使用Microk8s etcd实例搜索以前的修订?

问题描述

我试图在Microk8s etcd实例中搜索我的机密的先前版本,但是每次刷新屏幕时,修订数量都会改变,我也不知道为什么。

当我尝试访问旧版本时,出现以下错误

etcdctl --endpoints=127.0.0.1:2380 get --rev=9133 -w fields /registry/secrets/default/MysqL-test-password
{"level":"warn","ts":"2020-09-14T13:40:08.594Z","caller":"clientv3/retry_interceptor.go:61","msg":"retrying of unary invoker Failed","target":"endpoint://client-8b3e59a8-efd2-4f77-a96f-5ec3c451b9b7/127.0.0.1:2380","attempt":0,"error":"rpc error: code = OutOfRange desc = etcdserver: mvcc: required revision has been compacted"}
Error: etcdserver: mvcc: required revision has been compacted

我还在我的etcd配置文件添加了配置,并重新启动了服务,但没有帮助:

--auto-compaction-mode=periodic
--auto-compaction-retention=72h

似乎每次刷新屏幕时,修订版本的数量增加很多,而无需执行任何操作。

{"header":{"cluster_id":14841639068965178418,"member_id":10276657743932975437,"revision":15322,"raft_term":7}

1秒后

student@desktop:~$ etcdctl --endpoints=127.0.0.1:2380 get /registry/secrets/default/MysqL-root-password -w json
{"header":{"cluster_id":14841639068965178418,"revision":16412,"raft_term":7}

有人遇到过类似的事情吗?

解决方法

"etcdserver: mvcc: required revision has been compacted."并非错误,当试图在已压缩的资源版本上建立手表时,这是预期的消息。

您的etcd集群出了点问题,这几乎肯定不是apiserver问题。您可能需要禁用一个警报。

还请记住,您必须将etcd版本更新为3.0.11或更高版本- https://github.com/kubernetes/kubernetes/issues/45506

看看:mvcc-issuesreloader