yuyicai / update-kube-cert

K8s 集群证书过期处理,更新 kubeadm 生成的证书有效期为 10 年。支持全部版本。
MIT License
517 stars 281 forks source link

使用这个脚本更新后,kube-apiserver组件报错 #15

Closed shadowofmoo closed 1 year ago

shadowofmoo commented 1 year ago

报错日志如下: "Unable to authenticate the request" err="[x509: certificate has expired or is not yet valid..." 但是集群使用kubectl相关命令正常。

yuyicai commented 1 year ago

执行这个命令查看一下证书有效期

openssl x509 -text -noout -in /etc/kubernetes/pki/apiserver.crt
shadowofmoo commented 1 year ago

Not Before: Apr 7 03:33:34 2023 GMT Not After : Apr 4 03:33:34 2033 GMT

使用kubeadm 检查证书也是2033年到期

yuyicai commented 1 year ago

麻烦提供一下信息: kube版本:v1.x.x 容器引擎:containerd or docker

yuyicai commented 1 year ago

你原来的证书是不是过期的,如果是,那么就是 kube-apiserver 重启失败,看一下 kube-apiserver 容器持续运行时间

shadowofmoo commented 1 year ago

kube版本:Kubernetes v1.23.5 容器引擎:containerd

原来的证书不是过期的,在使用你这个脚本更新证书之后,使用各项命令正常。 然后今天才发现,kubelet kube-apiserver 一直在报证书错误

yuyicai commented 1 year ago

kube版本:Kubernetes v1.23.5 容器引擎:containerd

原来的证书不是过期的,在使用你这个脚本更新证书之后,使用各项命令正常。 然后今天才发现,kubelet kube-apiserver 一直在报证书错误

containerd,脚本用的是 docker 重启命令,你需要手动重启一下 kube-apiserver

shadowofmoo commented 1 year ago

用的是那个containerd的脚本

yuyicai commented 1 year ago

用的是那个containerd的脚本

嗷嗷,你查看一下 kube-apiserver 的运行时间,看看重启生效了没有,如果环境运行重启,可以重启一下

shadowofmoo commented 1 year ago

重启生效了,如果不生效的话,使用基本的命令会报证书错误

yuyicai commented 1 year ago

理论上,现在 kubectl 和集群正常通信,各种命令能正常使用,kube-apiserver 就是能正常响应请求的,具体问题还得看更多日志才行

yuyicai commented 1 year ago

如果需要详细排查,可以邮件一下 yuyicai@hotmail.com ,提供一下微信 or TG 联系方式

yuyicai commented 1 year ago

如果需要详细排查,可以邮件一下 yuyicai@hotmail.com ,提供一下微信 or TG 联系方式

如果详细 log 方便贴在这里,也可以继续在 issue 中讨论

shadowofmoo commented 1 year ago

加了大佬的微信,在大佬帮助下解决了。先感谢一下大佬。解决过程方法如下: 先说一下环境:kubernetes v1.23.5 底层容器使用的 containerd 在使用大佬的脚本更新证书之后,使用kubeadm certs check-expiration 命令查看证书,证书也确实更新为10年有效期。使用kubectl 相关命令,都能正常执行。 之后有人反应使用 kubectl 不能正常查看日志,经排查,是apiserver组件使用旧证书导致的,详细解释见这个链接: https://www.cnblogs.com/wzs5800/p/15085193.html 解决方法见这个链接: https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/kubeadm/kubeadm-certs/#manual-certificate-renewal 后来也就是这个issuer,node节点kubelet 报证书错误,apiserver组件偶尔报证书错误。还是因为node节点上的kubelet组件使用旧版证书导致的,使用systemctl restart kubelet命令,重启一下kubelet就可以了。