K8S 证书过期解决办法

问题现象
K8S集群证书过期后,会导无法创建Pod,通过kubectl get nodes也无法获取信息,甚至dashboard也无法访问。

执行命令发现报错:
Unable to connect to the server: x509: certificate has expired or is not yet valid

查看K8S的日志:

Part of the existing bootstrap client certificate is expired: 2021-06-10 06:29:04 +0000 UT
这是说明k8s使用的证书过期了,k8s自带证书是一年的有效期。所以我们解决问题的办法就是更换证书。

一、确认K8S证书过期时间

查看k8s某一证书过期时间:

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

显示如下,通过下面可看到证书有效期是1年,从2021到2023年:

# openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text |grep ' Not '
            Not Before: Apr 27 10:30:15 2021 GMT
            Not After : Mar 25 07:53:53 2023 GMT
   如果遇到 openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file
    查找一下libssl.so.1.1的位置,然后连接到/usr/lib64/libssl.so.1.1即可。如下我的位置是在/usr/local/lib64/libssl.so.1.1,连接到/usr/lib64/libssl.so.1.1就可以了。
    [root@localhost ~]# find / -name libssl.so.1.1
    /usr/local/lib64/libssl.so.1.1
    [root@localhost ~]# ln -s /usr/local/lib64/libssl.so.1.1  /usr/lib64/libssl.so.1.1
    [root@localhost ~]# ln -s /usr/local/lib64/libcrypto.so.1.1  /usr/lib64/libcrypto.so.1.1
    [root@localhost ~]# openssl version
    OpenSSL 1.1.1  11 Sep 2018

其它证书同理,K8s各个证书过期时间如下:

/etc/kubernetes/pki/apiserver.crt           #1年有效期
/etc/kubernetes/pki/front-proxy-ca.crt        #10年有效期
/etc/kubernetes/pki/ca.crt              #10年有效期
/etc/kubernetes/pki/apiserver-etcd-client.crt    #1年有效期
/etc/kubernetes/pki/front-proxy-client.crt      #1年有效期
/etc/kubernetes/pki/etcd/server.crt         #1年有效期
/etc/kubernetes/pki/etcd/ca.crt           #10年有效期
/etc/kubernetes/pki/etcd/peer.crt          #1年有效期
/etc/kubernetes/pki/etcd/healthcheck-client.crt  #1年有效期
/etc/kubernetes/pki/apiserver-kubelet-client.crt  #1年有效期

或使用统一命令查看

kubeadm alpha certs check-expiration

二、使用延长证书过期的方法解决K8S证书过期问题

K8S在过期之前,使用kubeadm alpha phase里的certs和kubeconfig命令,同时配合kubelet证书自动轮换机制来解决这个问题(具体操作可以百度搜索),这里介绍证书已经过期的解决方法,以下延长证书过期的方法适合kubernetes1.14、1.15、1.16、1.17、1.18版本。操作步骤如下:

2.1 下载update-kubeadm-cert.sh

百度网盘下载:
链接:https://pan.baidu.com/s/1WyVAwyL3mOGVFgpQ2tomCw
提取码:f6sa

2.2 把update-kubeadm-cert.sh文件上传到k8s各节点任意位置


2.3 在每个节点都执行如下命令

1)给update-kubeadm-cert.sh证书授权可执行权限
chmod +x update-kubeadm-cert.sh

2)执行下面命令,修改证书过期时间,把时间延长到10年
./update-kubeadm-cert.sh all

3)在master节点查询Pod是否正常,能查询出数据说明证书签发完成
注:执行命令时需要断开连接重新连接命令才生效

kubectl  get pods -n kube-system

显示如下,能够看到pod信息,说明证书签发正常:

4)重启kubelet
systemctl restart kubelet

三、验证证书有效时间是否延长到10年

openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  | grep Not
显示如下,通过下面可看到apiserver证书有效期是10年,从2021到2031年: 

 其它证书同理进行验证,或使用统一查看命令

kubeadm alpha certs check-expiration


————————————————
版权声明:本文为CSDN博主「网络飞鸥」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/erhaiou2008/article/details/124168680


————————————————

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值