解决k8s集群 Unable to connect to the server: x509: certificate is valid for xxx, not xxx问题

为了能使本地能连接k8s集群更好的测试client-功能,在服务器上为本地签发了kubeconfig文件,放到本地之后出现如下的错误。

 通过查阅资料发现了一个kubectl的参数--insecure-skip-tls-verify,加上这个参数之后确实好使了,但是,总是感觉治标不治本,所以经过一番查阅是apiserver的证书中没有添加192.168.2.8这个ip导致的,需要重新生成一下证书,具体操作如下:

1、查看apiserver证书信息(master节点)

# cd /etc/kubernetes/pki 
# openssl x509 -noout -text -in apiserver.crt |grep IP

从上面可以看出ip中并没有报错信息中的192.168.2.8这个IP地址,所以需要重新生成(截图为修改好的)。

2、删除旧证书

为了保险起见,这里选择将证书移动到其他位置。

# mkdir -pv /opt/cert
# mv apiserver.* /opt/cert

3、生成新的apiserver证书

# kubeadm init phase certs apiserver \
--apiserver-advertise-address 172.19.8.107 \
--apiserver-advertise-address 172.19.8.100 \
--apiserver-cert-extra-sans 127.0.0.1 \
--apiserver-cert-extra-sans 172.16.0.1 \
--apiserver-cert-extra-sans 0:0:0:0:0:0:0:1 \
--apiserver-cert-extra-sans 172.19.8.106 \
--apiserver-cert-extra-sans 172.19.8.107 \
--apiserver-cert-extra-sans 192.168.2.8 \
--apiserver-cert-extra-sans 180.168.9.2 

--apiserver-cert-extra-sans参数后可以加上需要添加的IP地址,这里为了省事儿一次性添加了多个,具体情况按需添加即可。

 4、检查证书

# ls apiserver.*
# apiserver.crt  apiserver.key

通过检查可以看到新的证书已经成了,现在只需要重启apiserver即可。如果出现问题,可以删除新的证书,将老的证书移回原位,重启apiserver即可。

5、重启服务

# kubectl get pod -n kube-system
# kubectl delete pod kube-apiserver-gc-k8s-prod-master-1   -n kube-system
# kubectl delete pod kube-apiserver-gc-k8s-prod-master-2   -n kube-system
# kubectl delete pod kube-apiserver-gc-k8s-prod-master-3   -n kube-system

如果是kube-apiserver重启(首先确认kube-apiserver Pod在那个node节点上,保证该节点有kube-apiserver.yaml中所需的pki文件)
# cd  /etc/kubernetes/manifests
# kubectl delete -f kube-apiserver.yaml
# kubectl apply -f  kube-apiserver.yaml

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值