1.备份当前k8s 集群配置文件(3个master 都备份)
cp -r /etc/kubernetes /etc/kubernetes.bak
2.删除当前k8s集群的apiserver的cert 和 key
rm -rf /etc/kubernetes/pki/apiserver.*
3.生成新的apiserver的cert和key,cd 到pki 目录下
cd /etc/kubernetes/pki/
---apiserver-advertise-address:此参数用于指定 kube-apiserver 在哪个 IP 地址上公开服务。默认情况下,kube-apiserver 将在监听地址上公开服务,我们这里填写VIP地址,如果没有VIP可以填写master节点的任何IP
---apiserver-cert-extra-sans:kube-apiserver 的证书扩展地址
推荐签订Master节点外网IP或者域名,只要签订的Master节点的IP或者域名能被边缘节点访问到就可以,当然内网IP也被允许,前提是边缘节点可以通过此IP访问 Kube-apiserver,我们这里填写所有的master节点的IP。
kubeadm init phase certs apiserver --apiserver-advertise-address 10.2.83.171 --apiserver-cert-extra-sans 10.2.83.181 --apiserver-cert-extra-sans 10.2.83.182 --apiserver-cert-extra-sans 10.2.83.183 --kubernetes-version=v1.23.14
4.查看apisever,新ip已经写入到 crt 证书里面
for i in $(find /etc/kubernetes/pki -type f -name "*.crt");do echo ${i} && openssl x509 -in ${i} -text | grep 'DNS:';done
5.查看获取k8s节点join命令是否更新为VIP地址
kubeadm certs renew admin.conf
6.将apiserver的新KEY复制到其它的master节点
scp ./apiserver.crt 10.2.83.182:/etc/kubernetes/pki/
scp ./apiserver.crt 10.2.83.183:/etc/kubernetes/pki/
scp ./apiserver.key 10.2.83.182:/etc/kubernetes/pki/
scp ./apiserver.key 10.2.83.183:/etc/kubernetes/pki/
7.轮询重启K8S Apiserver服务
kubectl delete pod kube-apiserver-k8s-master-test01 -n kube-system
kubectl delete pod kube-apiserver-k8s-master-test02 -n kube-system
kubectl delete pod kube-apiserver-k8s-master-test03 -n kube-system
8.修改admin.conf和config 的内容,修改为server: https://10.2.83.171:6443 修改为VIP的地址,并同步修改其它master节点的地址
vim /etc/kubernetes/admin.conf
vim /root/.kube/config