导语:k8s是单节点单master的机器,且k8s api使用虚拟ip100.100.100.100。仅适用(使用虚拟IP 100.100.100.100为api通讯的ip) 的单机k8s,以供参考。

A为使用中的机器,B为纯净的机器

2台机器安装etcdctl。被恢复的机器B上安装好k8s。

提前同步好docker文件夹以及数据文件到指定路径。

源机器A执行命令备份etcd

ETCDCTL_API=3 etcdctl --endpoints 127.0.0.1:2379   --cert=/etc/kubernetes/pki/etcd/server.crt   --key=/etc/kubernetes/pki/etcd/server.key   --cacert=/etc/kubernetes/pki/etcd/ca.crt  snapshot save /srv/snap.db

rsync -avP /srv/snap.db  192.168.10.84:/srv/

新机器B上执行恢复

cp -r /var/lib/etcd /var/lib/etcd_bak
rm -fr  /var/lib/etcd/* 
ETCDCTL_API=3 etcdctl snapshot restore /srv/snap.db --data-dir=/var/lib/etcd

# 重启一下服务器
reboot

常规ip恢复可参考

https://blog.csdn.net/zfw_666666/article/details/126892220

先修改/etc/hosts解析。将对应ip替换

备份 kubernetes 目录

cp -r /etc/kubernetes{,-bak}

查看证书内的 ip

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'Address';done

生成集群配置(需更换api ip)

kubeadm config view > /root/kubeadm.yaml

# 获取当时创建k8s集群的kubeadm.yaml(kubeadm-config.yaml)
# 如果有对应cm  kubeadm-config 也可以查看并获取
# kubectl get cm -o yaml -n kube-system kubeadm-config

删除原有的证书

rm -rf /etc/kubernetes/pki/{apiserver*,front-proxy-client*}
rm -rf /etc/kubernetes/pki/etcd/{healthcheck*,peer*,server*}

重新生成证书

kubeadm init phase certs all --config /root/kubeadm.yaml
# kubeadm init phase certs all --config /data1/new-terra-scripts/base/config/kubeadm/kubeadm-config.yaml

再次查看证书内的 ip

for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'Address';done

将配置更新到 configmap 中

kubeadm init phase upload-config kubeadm --config kubeadm.yaml
# kubeadm init phase upload-config kubeadm --config /data1/new-terra-scripts/base/config/kubeadm/kubeadm-config.yaml

node节点IP更换,证书会自动重新签发

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐