如果是个多节点的集群,更换一台master节点的ip有个更简单的办法,那就是先把这台机器下线,然后再扩容一台新的master,安全无副作用,如果是单节点更换ip地址(如果旧ip不用回收,那么可以直接在网卡上再绑定一个ip地址,不用对k8s进行修改)

kubeadm之单节点master升级高可用master 有点类似

首先更换操作系统ip地址

准备

1
2
3
4
5
6
7
8
9
# 备份配置文件
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 '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
# 这里需要修改证书绑定的ip
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