Kubernates证书过期问题的解决

Kubernates证书过期问题的解决

使用kubeadm安装的kubernates(版本号为:1.9.0),使用了一年以后出现问题。问题状态为不管使用kubectl 的什么指令,都报出以下的异常

Unable to connect to the server: x509: certificate has expired or is not yet valid

原因为apiserver证书时间到期,需要重新生成证书,使用kubeadm部署集群的时候,1.13.x版本可以直接renew,但是1.9.0没有需要重新生成证书。

Kubernates证书过期问题的解决

使用kubeadm部署集群的时候,CA的有效期为10年,可以使用原CA进行签发证书,即ca.crt、front-proxy-ca.crt。

一、备份原证书和配置文件

cd /etc/kubernetes
mv admin.conf admin.conf.bak
mv controller-manager.conf controller-manager.conf.bak
mv kubelet.conf kubelet.conf.bak
mv scheduler.conf scheduler.conf.bak
cd pki
mv apiserver.crt apiserver.crt.bak
mv apiserver.key apiserver.key.bak
mv apiserver-kubelet-client.crt apiserver-kubelet-client.crt.bak
mv apiserver-kubelet-client.key apiserver-kubelet-client.key.bak
mv front-proxy-client.crt front-proxy-client.crt.bak
mv front-proxy-client.key front-proxy-client.key.bak

二、生成新证书

kubeadm alpha phase certs apiserver --apiserver-advertise-address 192.168.13.80(我这里是HA的地址)
kubeadm alpha phase certs apiserver-kubelet-client
kubeadm alpha phase certs front-proxy-client

三、生成新的配置文件

kubeadm alpha phase kubeconfig all --apiserver-advertise-address 192.168.13.80(我这里是HA的地址)

四、替换老的admin.conf配置文件

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

五、重启服务

需要重启kube-apiserver,kube-controller-manager, kube-scheduler

docker ps | grep xxxx

docker kill -s HUP {容器ID}

kill掉容器后,会自动重构

查看证书有效时间

openssl x509 -in front-proxy-client.crt -noout -text |grep Not
Not Before: Apr 12 01:35:40 2018 GMT
Not After : Apr 11 10:26:06 2020 GMT

完成以上步骤,证书就更新完成了。

PS:在生成证书的时候需要访问谷歌dl.k8s.io,需要进行代理。


分享到:


相關文章: