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