Ubuntu环境下Minikube集群kubectl访问API Server遇证书过期,求证书续订方案
解决kubectl证书过期/时间不匹配的问题
首先看你报错的细节:current time 2021-08-30T14:39:50+01:00 is before 2021-08-30T14:20:10Z,这里藏了个时区坑——你的系统用的是+01:00时区(比如欧洲中部时间),而证书生效时间用的是UTC标准时间,换算下来你的本地时间14:39其实对应UTC的13:39,确实比证书生效的UTC14:20早,这大概率是系统时间不同步导致的,先优先排查这个:
第一步:检查并同步系统时间
- 查看当前系统时间和时区状态:
确认输出里的timedatectlLocal Time和UTC Time是否对应,NTP service是否显示active。 - 如果NTP没开启,先打开自动时间同步:
sudo timedatectl set-ntp on - 手动强制同步时间(如果自动同步没生效):
sudo apt update && sudo apt install -y ntpdate sudo ntpdate pool.ntp.org
同步完时间后再试试kubectl get pods,很多时候这个错误都是时间不同步导致的,不一定是证书真的过期。
如果时间没问题,再续订MicroK8s证书
从你的kubectl配置看,你实际用的是MicroK8s(不是开头提到的Minikube),可以用MicroK8s自带的证书刷新工具:
- 停止MicroK8s服务:
sudo microk8s stop - 刷新API Server的证书(如果需要全量刷新所有集群证书,把
--cert server.crt换成--all):sudo microk8s refresh-certs --cert server.crt - 重启MicroK8s:
sudo microk8s start - 更新kubectl的配置文件,确保CA证书是最新的:
如果你是root用户,就导出到root的配置目录:sudo microk8s config > ~/.kube/configsudo microk8s config > /root/.kube/config
如果你确实用的是Minikube(误写为MicroK8s)
如果是Minikube集群,续订证书的方法更直接:
- Minikube 1.20及以上版本可以直接续订证书:
minikube certs renew all minikube stop && minikube start - 旧版本可以直接删除重建集群(注意:此操作会丢失集群数据,记得提前备份):
minikube delete minikube start
内容的提问来源于stack exchange,提问作者e2rabi
相关产品推荐
相关产品推荐

