K8s环境使用老IP添加一个新的master节点
注:以下为k8s 1.16版本,并且是新加节点,无备份的操作
备份
- 配置etcd 3
1
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
2ake 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.