K8s环境使用老IP添加一个新的master节点
注:以下为k8s 1.16版本,并且是新加节点,无备份的操作
- 备份 - 配置etcd 31 
 2docker cp `docker ps |grep etcd |grep -v pause |awk '{print $1}'`:/usr/local/bin/etcdctl /tmp/ 
 export `cat /etc/kubernetes/manifests/etcd.yaml |grep ETCDCTL_API -A1 |xargs |sed 's/^.//g' |awk '{print $1 }'` ;echo $ETCDCTL_API
- 获取etcd指令:1 export etcdctl=`cat /etc/kubernetes/manifests/etcd.yaml |grep ETCDCTL_API -A1 |xargs |sed 's/^.//g' |sed 's/ETCDCTL_API=3 /\/tmp\//g'` 
- 备份etcd:(最好/etc/kubernetes目录)1 mkdir /back ; cd /back ; $etcdctl snapshot save snapshot.db 
 
- 配置etcd 3
- 根据ID删除坏的etcd节点: - 1 
 2- $etcdctl member list 
 $etcdctl member remove <ID>
- 删除坏掉的node节点: - 1 - kubectl delete nodes <node> 
- 使用ake将这个节点重新加回来 - 1 
 2- ake addnodes 
 ake join --apiserver 192.168.16.40:6443 --pkg-repo http://192.168.16.40:7000 --registry 192.168.16.40:60080 --debug
- 给加入进来的node打上master的标签 - 1 - kubectl label no <node> node-role.kubernetes.io/master= - 如果/etc/kubernetes/有备份,以下步骤不需要 将其他节点的/etc/kubernetes/整个目录拷贝过来,并修改/etc/kubernetes/manifests/下yaml文件,将其中的相关的ip换成本机的ip 
- 重新添加etcd节点 - 1 - $etcdctl member add 10.0.129.124 --peer-urls=https://10.0.129.124:2380 
- 重启kubelet 
- 重新签发etcd证书看文档,在执行脚本前添加当前机器的IP ,请看文档k8s 1.13证书升级(包含etcd证书)  
- 旧版本k8s可用:- 把其他 master 节点的 /etc/kubeadm/etcdcfg.yaml 拷贝过来,然后把其中的 ip 信息改成本机的 ip
- 把其他 master 节点的 /etc/kubernetes/pki/etcd/ca.crt 和 /etc/kubernetes/pki/etcd/ca.key 拷贝过来
- 然后使用 kubeadm init phase certs etcd-server etcd-peer apiserver-etcd-client –config /etc/kubeadm/etcdcfg.yaml 生成新的证书
- 最后用 kubeadm init phase etcd local –config /etc/kubeadm/etcdcfg.yaml 生成新的 etcd manifest 就可以了
 
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.

