k8s v1.19版本之后,自签证书过期x509: certificate has expired or is not yet valid
前言
在 Kubernetes 1.16
版本之前,kubeadm
工具的 alpha certs
子命令用于生成和管理 Kubernetes
集群的证书。然而,从 Kubernetes 1.19
版本开始,kubeadm
引入了一套新的证书管理 API,并移除了 alpha certs
子命令。
kubeadm
的正式证书管理功能来生成和更新 Kubernetes
集群的证书。你可以使用以下命令来生成证书:
kubeadm init phase certs all
这个命令将根据 kubeadm
的配置生成所需的证书。生成的证书将存储在指定的证书目录中,通常是 /etc/kubernetes/pki/
。
解决
#查看证书到期时间
kubeadm certs check-expiration
# 备份 kubernetes配置
cp -r /etc/kubernetes /etc/kubernetes_bak
#更新自签证书
kubeadm certs renew all
# 此时所有证书都已重新生成,在 /etc/kubernetes/pki 下。/etc/kubernetes/admin.conf、/etc/kubernetes/controller-manager.conf、/etc/kubernetes/scheduler.conf 也已经更新了。
#复制配置
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
#之后重启kubelet,docker(master与node都要重启)
systemctl restart docker
systemctl restart kubelet
k8s v1.16.3,Unable to connect to the server: x509: certificate has expired or is not yet valid
说明:
certs renew 使用现有的证书作为属性(Common Name、Organization、SAN 等)的权威来源, 而不是 kubeadm-config ConfigMap。强烈建议使它们保持同步。
kubeadm certs renew 可以更新任何特定的证书,或者使用子命令 all 更新所有的证书,如下所示:
kubeadm certs renew all