mvcc: cannot unmarshal event: proto: wrong wireType = 0 for field Key

介绍


查看etcd的启动日志,发现报错mvcc: cannot unmarshal event: proto: wrong wireType = 0 for field Key。经查询资料,此报错是由于服务器非正常关机(意外掉电,强制拔电)后 etcd数据损坏导致的,这个节点之前确实是出现异常关机,etcd无法启动,那么解决此问题就行了

对 etcd db 进行数据校验,发现数据被损坏:


[root@node-1 ~]# bolt check /var/lib/etcd/member/snap/db
page 1143: multiple references
page 1072: multiple references
page 1122: multiple references
page 1138: multiple references
page 1088: multiple references
page 630: unreachable unfreed
page 999: unreachable unfreed
page 1021: unreachable unfreed
page 1029: unreachable unfreed 
page 1098: unreachable unfreed
10 errors found
invalid value

修复方法


通过如下方式可以把损坏的 etcd 节点(例子中node-1上的 etcd1 https://10.60.1.3:2380)先移除再重新加入集群:

1、在故障节点停止 etcd服务并删除损坏的 etcd 数据


[root@node-1 ~] systemctl stop etcd; mv /var/lib/etcd/member/* ~/etcd-backup

2、在其它节点找到故障etcd 的 member id 并从 从集群中移除


[root@node-2 ~]# etcdctl member list
39872ad0e5987746, started, etcd3, https://10.60.1.5:2380, https://10.60.1.5:2379
72af99a4c899158b, unstarted, etcd1, https://10.60.1.3:2380, https://10.60.1.3:2379
cd39f3691f506c2b, started, etcd2, https://10.60.1.4:2380, https://10.60.1.4:2379
[root@node-2 ~]# etcdctl member remove 72af99a4c899158b

3、重新把 etcd1添加回集群


[root@node-2 ~]# etcdctl member add etcd1 --peer-urls=https://10.60.1.3:2380
Member a431fc3546d257c4 added to cluster 9a63314b15ba7312
ETCD_NAME="etcd1"
ETCD_INITIAL_CLUSTER="etcd3=https://10.60.1.5:2380,etcd1=https://10.60.1.3:2380,etcd2=https://10.60.1.4:2380"
ETCD_INITIAL_CLUSTER_STATE="existing"

4、在故障节点重启 etcd 服务


[root@node-1 ~] systemctl start etcd

5、查看确认etcd 和 Kubernetes集群恢复正常


1)etcdctl member list确认etcd集群恢复正常
2)kubectl get pod --namespace kube-system|grep apiserver|grep node-1确认 apiserver 恢复正常
3)kubectl get node| grep node-1确认节点处于 Ready 状态

在故障节点上停止etcd服务并删除损坏的 etcd 数据,现在etcd服务本来就没有启动,删除前先备份数据,最后启动etcd服务

注意事项:如果在3个控制节点的集群,出现2个节点 etcd 数据损坏,可能造成整个集群无法恢复的风险。请确保不对服务器进行非正常关机操作。

版权声明:本文为作者原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原创文章,作者:老C,如若转载,请注明出处:https://www.code404.icu/1306.html

发表评论

登录后才能评论

评论列表(1条)