K8S 集群 apiserver-advertise-address实例节点IP切换VIP

时间:2024-01-26 21:44:43

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