如果是个多节点的集群,更换一台 master 节点的 ip 有个更简单的办法,那就是先扩容一台新的 master,再把旧的 master 节点下线,安全无副作用,如果是单节点更换 ip 地址(如果旧 ip 不用回收,那么可以直接在网卡上再绑定一个 ip 地址,不用对 k8s 进行修改)
和 kubeadm之单节点master升级高可用master 有点类似
首先更换操作系统 ip 地址
略
准备
1 2 3 4 5 6 7 8 9
| cp -r /etc/kubernetes{,-bak}
for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done
rm -rf /etc/kubernetes/pki/{apiserver*,front-proxy-client*} rm -rf /etc/kubernetes/pki/etcd/{healthcheck*,peer*,server*}
|
重新签发证书
1 2 3 4 5
| kubeadm init phase certs all \ --apiserver-advertise-address 192.168.163.10 \ --apiserver-cert-extra-sans "192.168.163.10,192.168.163.11,192.168.163.12" \ --cert-dir "/etc/kubernetes/pki"
|
更新配置文件里的 ip 地址
1 2 3
| grep -R 10.0.0.10 /etc/kubernetes/*
vim ~/.kube/config
|
这个时候 kubectl 可用了,修改 configmap
1 2
| kubectl edit cm -n kube-system kubeadm-config kubectl edit cm -n kube-system kube-proxy
|
然后删除 pod 重建
1 2
| kubectl -n kube-system delete pod kube-apiserver-k8s kube-controller-manager-k8s kube-proxy-nhqvg kube-scheduler-k8s etcd-k8s coredns-558bd4d5db-c4xbw kubectl -n kube-flannel delete pod kube-flannel-ds-8s6cn
|