k8s的master节点更换ip后,导致通信问题出现问题,只需要通过kubeadm init phase命令,重新生成config文件和签名文件就可以解决。操作如下:
1.切换到/etc/kubernetes/manifests, 将etcd.yaml kube-apiserver.yaml里的ip地址替换为新的ip
cd /etc/kubernetes/manifests
vim etcd.yaml
vim kube-apiserver.yaml
2.生成新的config文件
cd /etc/kubernetes
mv admin.conf admin.conf.bak #更名
kubeadm init phase kubeconfig admin --apiserver-advertise-address <新的ip>
3.删除老证书,生成新证书
cd /etc/kubernetes/pki
mv apiserver.key apiserver.key.bak
mv apiserver.crt apiserver.crt.bak
kubeadm init phase certs apiserver --apiserver-advertise-address <新的ip>
4.重启
cd /etc/kubernetes
service docker restart
service kubelet restart
5.将配置文件config输出
kubectl get nodes --kubeconfig=admin.conf # 此时已经通信成功了
###将kubeconfig默认配置文件替换为admin.conf,这样就可以直接使用kubectl get nodes
cd /etc/kubernetes
mv admin.conf ~/.kube/config