服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 服务器知识 - K8S上生产环境后,90%都会遇到这个故障

K8S上生产环境后,90%都会遇到这个故障

2024-03-28 15:19攻城狮成长日记 服务器知识

在Kubernetes/K8s上生产环境中,90%的人都会遇到的一个故障,K8s集群突然有一天执行kubectl命令时,报错提示509证书过期。

在Kubernetes/K8s上生产环境中,90%的人都会遇到的一个故障,K8s集群突然有一天执行kubectl命令时,报错提示509证书过期。返回如下报错信息:

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

这是什么导致的呢?该怎么解决呢?

我们了解到kubectl,它实在上是读取kube/config这个文件,向API Server发起请求。也就是kubectl的任何操作,都是携带这个文件向API Server获取数据后显示到你当前的终端。

K8S上生产环境后,90%都会遇到这个故障

那这个提示就意味kube/config这个文件中的证书与API Server它的证书过期了。如果你使用kubeadm搭建的集群,它所有的证书默认存储在/etc/kubernetes/pki。这里面主要是k8s的证书和etcd使用的证书。这些证书默认有效期是1年。一旦过期,k8s集群就无法提供服务。

K8S上生产环境后,90%都会遇到这个故障

那为什么只有一年呢?

这是因为K8S官方,他希望你每年更新一次K8S的版本,来保持最新版本。同时它的证书实际也会给你延期。

那这种每年更新一次版本,来去更新证书,在生产环境中显然不太合适的。这种操作会增加集群不稳定或者出现其他问题的风险。

当然kubeadm也提供了一个命令方式,可以自动的给你续签这些所有的证书。

我们可以通过kubeadm certs check-expiration来去查看当前集群证书的一个有效期,因为本身这证书就是kubeadm在搭建集群中自动生成的,所以,它管理证书也是通过kubeadm这个命令进行管理它的一个续期。

K8S上生产环境后,90%都会遇到这个故障

通过这个命令可以查看当前所有证书它的一个有效期,可以看到证书的有效期剩余342天。下面是它的根证书,默认是10年,也就是「根证书它是非常重要的」。

客户端证书过期了,可以通过根证书可以生成。而这根证书一旦发生变化,它的影响范围就比较大了,所以,kubeadm它的根证书默认是10年,是完全足够用的。主要升级的也是客户端证书。

它提供一个命令,也是可以直接对这些客户端证书进行升级,不过在升级之前,我们先将一些数据给备份一下,以免在升级的过程中,产生一些额外的问题,好方便进行去恢复。

首先把/etc/kubernetes/pki这个目录进行备份。

cp /etc/kubernetes/pki /etc/kubernetes/pki.bk -r

然后再将etcd的数据目录备份一下。

cp /var/lib/etcd /var/lib/etcd.bk -r

使用kubeadm certs renew all将所有的证书升级,续期一年。

K8S上生产环境后,90%都会遇到这个故障

执行完之后,根据提示重启相关组件,由于该K8S集群使用kubeadm部署,只需要执行如下命令即可实现重启K8S相关组件。

mv /etc/kubernetes/manifests/*.yaml /home
sleep 20
mv /home/*.yaml /etc/kubernetes/manifests/

等待k8s集群启动成功后,再次查看证书时间,如下:

K8S上生产环境后,90%都会遇到这个故障

通过上述结果可以看到证书的有效期变成了一年。

原文地址:https://mp.weixin.qq.com/s?__biz=MjM5OTc5MjM4Nw==&mid=2457378581&idx=1&sn=42a21749e8a261e3877df23e5ce390a7

延伸 · 阅读

精彩推荐