最近给客户部署的集群由于机器重启集群不能启动,首先执行kubectl get node,发现没有可用的node,于是去看centos的系统日志/var/log/message,日志中有x509,证书无效或已过期,心想,为啥重启集群会导致证书错误?且先记录下:
x509,证书错误,无效或已过期
于是从集群的基础从底层往上查,k8s将集群的信息会记录在etcd中,而各个节点由flannel分配的docker子网段信息也存储在etcd中,所以我们先从etcd查起,然后查flannel,最后查k8s,集群层次结构如下图:
查etcd,发现etcd的集群日志也有报告加密证书错误,那重新生成一遍证书,重启etcd集群,使其使用新证书,这个时候出现了新的问题,etcd集群报告各个节点的时间差距太大,超过1s的容错范围,etcd使用了raft算法,选举leader过程中,会使用日志和日志记录的时间,如果各个节点时间差距超过1s,那么选举过程就会一直不成功,集群也一直不能正常启动。
既然由于各个节点时间差距较大,那就用ntp server都校