zoukankan      html  css  js  c++  java
  • Etcd故障恢复记录

    在一次kubernetes的升级过程中,由于之前欠下的技术债务,导致在删除etcd节点时没有把etcd中的成员删除,虽然安装的程序已经删除了,但是etcd集群中通过etcdctl member list还是能看到已删除的节点,而这次升级时候,又删除了了一台etcd节点,刚好etcd节点的节点存活数低于一半了。这是原因
    那么针对这种事故该如何处理呢,这里给出个思路,利用etcd的故障恢复,恢复一下具体操作如下

    etcd 备份
    利用已存活的etcd做个备份

    mkdir -p backup/k8s
    ETCDCTL_API=3 /root/local/bin/etcdctl snapshot save snapshot.db

    修改集群启动参数,强制把集群作为一个新集群启动
    找一个最后存活的机子作为节点,然后强制开启一个单节点集群来处理,

    vim /etc/systemd/system/etcd.service
    [Unit]
    Description=Etcd Server
    After=network.target
    After=network-online.target
    Wants=network-online.target
    Documentation=https://github.com/coreos
    
    [Service]
    Type=notify
    WorkingDirectory=/var/lib/etcd/
    ExecStart=/root/local/bin/etcd 
      --name=etcd1 
      --cert-file=/etc/etcd/ssl/etcd.pem 
      --key-file=/etc/etcd/ssl/etcd-key.pem 
      --peer-cert-file=/etc/etcd/ssl/etcd.pem 
      --peer-key-file=/etc/etcd/ssl/etcd-key.pem 
      --trusted-ca-file=/etc/kubernetes/ssl/ca.pem 
      --peer-trusted-ca-file=/etc/kubernetes/ssl/ca.pem 
      --initial-advertise-peer-urls=https://10.100.100.11:2380 
      --listen-peer-urls=https://10.100.100.11:2380 
      --listen-client-urls=https://10.100.100.11:2379,http://127.0.0.1:2379 
      --advertise-client-urls=https://10.100.100.11:2379 
      --initial-cluster-token=etcd-cluster-0 
      --initial-cluster=etcd1=https://10.100.100.11:2380 
      --initial-cluster-state=new 
      --data-dir=/var/lib/etcd 
      --force-new-cluster
    Restart=on-failure
    RestartSec=5
    LimitNOFILE=65536
    
    [Install]
    WantedBy=multi-user.target


    --force-new-cluster 通过这个新加的参数把11这个节点重置为单节点集群,

    systemctl daemon-reload && systemctl restart etcd

    重启服务后,通过

    export ETCDCTL_API=3
    etcdctl member list

    会看到如下信息

    60a005e7c128069f, started, etcd1, https://10.100.100.11:2380, https://10.100.100.11:2379

    说明当前节点已经起来了,然后,通过再把其他的节点添加上即可

    ETCDCTL_API=3 /root/local/bin/etcdctl member add etcd3 --peer-urls=https://10.100.100.16:2380

    添加后去16节点上启动服务,启动服务前删除16节点上的数据目录

    rm -rf /var/lib/etcd/*

    然后重启,其他的节点都按这种方式来恢复即可。

  • 相关阅读:
    C++输入cout与输出cin
    golang学习笔记
    vscode环境配置
    golang 微框架 gin
    git go使用socket5代理
    go包管理工具glide
    collectd的python插件(redis)
    zookeeper & kafka 集群
    redis复制集(sentinel)
    python加解密
  • 原文地址:https://www.cnblogs.com/eddycomeon/p/11320991.html
Copyright © 2011-2022 走看看