记一次kubernetes更新证书后续故障处理

摘要:今天有同事告诉我预发布环境部署k8s出问题了,“Unable to connect to the server: x509: certificate has expired or is not yet valid” 我看了报错是证书过期,可是上周五我已经更新了

私信 ”运维笔谈”,对话回复 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》PDF。

今天有同事告诉我预发布环境部署k8s出问题了,“Unable to connect to the server: x509: certificate has expired or is not yet valid” 我看了报错是证书过期,可是上周五我已经更新了k8s证书了呀,怎么回事呢?

我登录服务器kubectl已经无法执行了,的确是提示证书过期了。我顿时一想,怕不是集群坏了吧[擦汗],毕竟去年证书过期之后我操作更新的时候我就搞坏过一次集群了,这次我提前了几天更新证书。

万幸我 docker ps 执行的时候pod等容器还在正常运行。然后我过滤了下,查看kube-system的容器,发现了kube-apiserver还是运行1年左右,其他组件kube-scheduler,kube-controller-manager,etcd等是运行3天左右。

那么问题可以确认了,是apiserver未重启导致其还是使用老的证书,现在时间过了12月1号了,老的证书过期了。我直接使用docker stop了apiserver的容器和pause容器,apiserver重新启动之后,kubectl get no 可以正常执行了,同事那边Gitlab runner也可以正常部署应用了。

我明明记得我执行过apiserver的pod重启操作呀,我特意翻了下命令历史history,的确是有过kube-apiserver的 delete pod 操作。以后执行好了,增加一个确认操作吧,查看是不是真的重启过了。还有我是使用的kubectl delete操作(etcd重启我测试是OK的[狗头]),这些系统组件毕竟是静态pod,下回我还是剪切yaml文件其他目录,待pod消失再剪切回去吧。

来源:可爱笑汽车

相关推荐