七个节点,挂了5个,etcd无法访问
参考:
https://coreos.com/etcd/docs/latest/op-guide/recovery.html
此次我只恢复了v3的数据
在存活的节点上
export ETCDCTL_API=3 alias etcdctl="etcdctl --endpoints=https://109.105.1.253:2379 --cacert=/etc/etcd/ssl/etcd-ca.pem --cert=/etc/etcd/ssl/etcd.pem --key=/etc/etcd/ssl/etcd-key.pem"
etcdctl snapshot save snapshot.db
当前目录下生成文件snapshot.db, scp到所有节点
停止所有节点的etcd, 清空所有节点的etcd数据目录(注意丢失v2数据)
所有节点执行
node: 我只恢复了三个节点的集群,其他四个节点在集群健康之后依次member add进去
#!/bin/bash
ETCDCTL_API=3 etcdctl snapshot restore /root/snapshot.db \ --name k8s-m1 \ --initial-cluster k8s-m1=https://109.105.30.155:2380,k8s-m2=https://109.105.30.156:2380,k8s-m3=https://109.105.1.209:2380 \ --initial-cluster-token etcd-k8s-cluster \ --initial-advertise-peer-urls https://109.105.30.155:2380
生成一个{name}.etcd的文件夹 如 k8s-m1.etcd, 里边有一个member 的文件夹, 将member 拷贝到etcd数据目录中
修改etcd配置文件
initial-cluster 与上边一致
initial-cluster-state: 'new'
force-new-cluster 一定要是 false
启动这三个节点的etcd,集群健康