必须在master节点执行kubeadm certs check-expiration检查证书有效期,该命令不依赖API Server可用性;再用openssl验证/apiserver.crt和~/.kube/config中嵌入的client证书,避免因证书过期导致集群不可用或kubectl失败。

当Kubernetes集群通过kubeadm部署后,证书默认有效期为1年,现在已是2026年10月,很多集群的证书已过期或临近失效,【必须在master节点上执行检查命令】,否则会提示“couldn’t get current server API group list”或直接报错无法连接API Server。
使用kubeadm内置命令一键检查
在任意控制平面节点(master)上运行:
kubeadm certs check-expiration
该命令会立即输出所有关键证书路径、过期时间、剩余天数、CA来源及是否外部管理。例如显示“admin.conf Aug 05, 2025 12:11 UTC 91d ca no”,说明该文件证书已于2025年8月5日过期,当前已超期近14个月。
注意:此命令不依赖kube-apiserver可用性,即使集群已瘫痪也能运行,是诊断证书问题的第一步。
用openssl逐个验证具体证书文件
方法一:查看API Server服务端证书
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep -A1 "Not After"
方法二:快速提取过期日期(推荐用于脚本扫描)
openssl x509 -noout -enddate -in /etc/kubernetes/pki/apiserver.crt
输出形如“notAfter=Aug 5 12:11:33 2025 GMT”,可直接比对当前时间。若系统时间早于该日期,说明证书尚未过期;若晚于,则已失效。
【务必确认文件路径真实存在】——某些精简部署可能缺失apiserver-etcd-client.crt等中间证书,此时需结合kubeadm命令结果交叉验证。
检查kubectl客户端配置中的嵌入证书
第一步:提取admin.conf中base64编码的client-certificate-data
grep "client-certificate-data" ~/.kube/config | head -n1 | awk '{print $2}' | base64 -d > /tmp/kube-admin.crt
第二步:验证该证书有效期
openssl x509 -in /tmp/kube-admin.crt -noout -dates
这一步常被忽略,但实际影响kubectl命令能否执行。即使服务端证书更新完成,若admin.conf未同步,仍会报“x509: certificate has expired”。
第三步:清理临时文件
rm /tmp/kube-admin.crt


















