重新启动K8s Master之后,apiserver会引发错误“ x509:证书已过期或尚未生效”

时间:2019-04-02 08:27:10

标签: kubernetes kubespray

我有使用Kubespray的多主机kubernetes集群设置。 我运行了一个使用helm的应用程序,这极大地增加了master的负担。这使得主人几乎无法进入。之后,我一台关闭主机,并增加了它们的RAM和CPU。但是重新启动后,apiserver和调度程序pod均无法启动。它们处于“ CreateContainerError”状态。

APIserver使用消息x509: certificate has expired or is not yet valid记录了很多错误。

还有其他线程可以解决此错误,其中大多数建议修复apiserver或群集证书。但这是新设置的群集,证书的有效期至2020年。

以下是我的集群的一些详细信息。

CentOS Linux release: 7.6.1810 (Core)
Docker version: 18.06.1-ce, build e68fc7a

Kubernetes版本

Client Version: v1.13.2
Server Version: v1.13.2

1 个答案:

答案 0 :(得分:2)

很有可能在关机/重启期间,用于apiserver和Scheduler的Docker容器以非零退出状态退出,例如 255 。我建议您首先使用docker rm命令删除所有具有非零退出状态的容器。在所有主服务器上执行此操作,而不是在工作节点上执行此操作。

默认情况下,kubernetes在重启后为所有服务(apiserver,shceduler,controller-manager,dns,pod网络等)启动新的pod。您可以使用docker命令查看这些服务的新启动容器  例如:

docker ps -a | grep "kube-apiserver" OR
docker ps -a | grep "kube-scheduler"

在删除已退出的容器之后,我相信,用于apiserver和Scheduler的新Pod应该在群集中正常运行,并且应该处于“正在运行”状态。