记一个etcd节点重加入集群

最近重装了一个etcd节点。记录一下过程。

  1. 修改systemctl中 etcd.service 的配置,

    --initial-cluster-state existing
       
    # 注意将new 改为 existing
    

原本应该这样就可以了。不过我绕了个弯路,我将节点删除后又重新添加进来。也记录一下:

  1. 查看节点信息

    etcdctl --endpoints=$ENDPOINTS member list
    

    查到需要删除的节点。

  2. 删除节点

    etcdctl --endpoints=$ENDPOINTS member remove b9057cfdc8ff17ce
    
  3. 清理该节点上的member信息

    例如我的:

    rm -rf /var/local/etcd/etcddata/member
    
  4. 添加节点

    etcdctl --endpoints=$ENDPOINTS member add node03 https://xxx.xxx.xxx.xxx:2380
    

    此时将会显示类似如下信息:

    ETCD_NAME="xxxxx"
    ETCD_INITIAL_CLUSTER="8bfe795f8d91446a89c3c1370da1302f=http://xxx:2380,118b5e074f2e4ad0b461f2399f08f72d=http://xxx:2380,infra3=http://xxx:2380"
    ETCD_INITIAL_CLUSTER_STATE="existing"
    
  5. 预先查看日志

    在原有节点和新节点上分别查看日志,如果有错误可以快速发现:

    journalctl -u etcd -f
    
  6. 新节点运行etcd

    systemctl restart etcd
    

大功告成。

期间还遇到下面的错误,把原有 data 清空,根据上面的步骤进行后就解决了:

etcdserver: cannot get the version of member 2e91fd4f1285776 (Get http://xxx.xxx.xxx.xxx:2380/version: dial tcp xxx.xxx.xxx.xxx:2380: i/o timeout)

【Calico系列】7 Calico ibgp 配置简述 linux 离线安装 docker