0

我有使用 Kubespray 的多主机 kubernetes 集群设置。我在其上使用 helm 运行了一个应用程序,这大大增加了 master 的负载。这使得 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
4

1 回答 1

2

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

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

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

删除退出的容器后,我相信 apiserver 和调度程序的新 pod 应该在集群中正常运行,并且应该处于“运行”状态。

于 2019-04-02T08:32:23.183 回答