暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

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

运维笔谈 2024-12-05
67

点击上方蓝字”运维笔谈”,对话回复 “阿里云k8s” 可以获取《阿里云Kubernetes项目实战手册》PDF。

今天有同事告诉我预发布环境部署k8s出问题了,“Unable to connect to the server: x509: certificate has expired or is not yet valid” 我看了报错是证书过期。我原以为是gitlab runner上的配置未更新,当我替换好新的配置(就是连接k8s的凭证文件),重启runner之后,还是无法部署。


我决定登录到预发布环境服务器上执行下 kubectl get no也已经无法执行了,的确是提示证书过期了。可是我上周五已经更新好证书了呀。我顿时一想,怕不是集群坏了吧,毕竟去年证书过期之后我操作更新的时候我就搞坏过一次集群了,所以这次我提前了两天更新证书。


这个时候千万不能慌,毕竟我当时测试过集群是稳定的。我执行 docker ps 发现pod容器还在正常运行。然后我过滤了下,查看kube-system的容器,发现了kube-apiserver还是运行1年左右,其他组件kube-scheduler,kube-controller-manager,etcd等是运行3天左右。


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



我明明记得我执行过apiserver的pod重启操作呀,我特意翻了下shell命令历史history ,是的,的确是有过delete kube-apiserver pod的操作

总结一下:以后执行好了,增加一个确认操作吧,查看是不是真的重启过了。还有我是使用的kubectl delete操作(etcd重启我测试是OK的),这些系统组件毕竟是静态pod,下回我还是剪切yaml文件其他目录,待pod消失再剪切回去吧。


文章转载自运维笔谈,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论