执行kubectl 时

报错现象:Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.103.x.x, 192.168.0.x, 10.103.x.x, 10.103.x.x, 127.0.0.1, not 192.168.0.x

1、分析原因:

原因从报错信息可以看出来:是证书对访问的IP做了校验,解决的方法就是要重新制作证书(不用动集群)

2、解决方案:(操作步骤)

1.备份当前k8s 集群配置文件(3个master 都备份)

  cp -r /etc/kubernetes /etc/kubernetes.bak

2.删除当前k8s集群的apiserver的cert 和 key

 rm -rf /etc/kubernetes/pki/apiserver.*

3.生成新的apiserver的crt和key,cd 到pki 目录下

cd /etc/kubernetes/pki/

kubeadm init phase certs apiserver --apiserver-advertise-address 10.103.x.x --apiserver-cert-extra-sans 192.168.0.x --apiserver-cert-extra-sans 10.103.x.x --apiserver-cert-extra-sans 10.103.x.x --apiserver-cert-extra-sans 192.168.0.x

#kubeadm-config.yaml 初始化配置生成【需要先添加新的VIP】

kubectl -n kube-system get configmap kubeadm-config -o jsonpath='{.data.ClusterConfiguration}' > kubeadm-config.yaml

或者 kubeadm init phase  certs apiserver   --config=kubeadm-config.yaml

#查看apisever,新ip已经写入到 crt 证书里面

openssl x509 -noout -text -in  /etc/kubernetes/pki/apiserver.crt |grep  DNS

for  i in 1 2 3;do scp -rp apiserver.crt apiserver.key  root@1.1.1.$i:/etc/kubernetes/pki/;done

注意:--apiserver-advertise-address 的值,只需要填master的内网ip,不需要填k8s内部使用的 10.96.0.1

         --apiserver-cert-extra-sans # 外部ip

4.刷新admin.conf 把原来实例ip修改为vip ,再scp 到各个master

kubeadm certs renew admin.conf

for  i in 1 2 3;do scp -rp admin.conf root@1.1.1.$i:/etc/kubernetes/;done

5.重启apiserver(3个master节点都需要)

6.刷新.kube/config

cp /etc/kubernetes/admin.conf ~/.kube/config

注:这里生成的 admin.conf 文件,server填写的依然是master的内网IP,如果需要使用VIP,将这个IP改为VIP即可

 

posted on 2023-03-16 15:15  MhaiM  阅读(957)  评论(0编辑  收藏  举报