温馨提示×

centos k8s为何证书过期

小樊
48
2026-10-12 04:57:22
栏目: 智能运维

在 CentOS 上运行的 Kubernetes(k8s)证书过期,通常不是 CentOS 本身的问题,而是 Kubernetes 自身的证书管理机制 导致的。下面从原因、机制、常见场景和解决办法几个角度说明。


一、Kubernetes 证书为什么会过期

1️⃣ Kubernetes 自带证书有默认有效期

Kubernetes 在初始化(kubeadm init)时会自动生成一批证书,例如:

  • apiserver 证书
  • apiserver-kubelet-client
  • front-proxy-client
  • etcd 相关证书
  • ca(通常 10 年)
  • admin.conf / kubelet.conf

默认有效期:

  • CA 证书:10 年
  • 其他证书:1 年

⚠️ 1 年后如果不续期,就会出现证书过期问题


2️⃣ kubeadm 默认不会自动续期

  • kubeadm 不会自动轮换证书
  • 只有在以下情况才会更新:
    • 手动执行 kubeadm certs renew
    • 或重新 kubeadm init

3️⃣ CentOS 并不是原因,但会影响操作

CentOS 只是运行环境,可能“间接”导致问题:

  • 服务器长期不重启
  • 时间不同步(NTP 问题)
  • 系统时间被改(证书校验失败)

二、常见证书过期表现

典型报错

x509: certificate has expired or is not yet valid

具体现象

  • kubectl 无法连接 apiserver
  • kubelet 无法注册节点
  • kube-apiserver 起不来
  • journalctl -u kubelet 报错

三、如何确认证书是否过期

查看证书有效期

kubeadm certs check-expiration

示例输出:

CERTIFICATE                EXPIRES
apiserver                  Jan 10, 2025
apiserver-kubelet-client   Jan 10, 2025

四、CentOS + kubeadm 环境下解决方法

✅ 方法 1:使用 kubeadm 续期(推荐)

# 续期所有证书
kubeadm certs renew all

# 重启控制平面组件
systemctl restart kubelet

⚠️ 如果是多 master,每个节点都要执行


✅ 方法 2:重新生成 kubeconfig

mv ~/.kube/config ~/.kube/config.bak
cp -i /etc/kubernetes/admin.conf ~/.kube/config

✅ 方法 3(极端):重新初始化(不推荐)

kubeadm reset
kubeadm init

❌ 会丢集群状态,仅测试环境使用


五、如何避免以后再过期

✅ 1. 定期续期(crontab)

0 0 1 1 * kubeadm certs renew all

✅ 2. 使用长期 CA(自建集群)

  • 自建 CA
  • 手动签发 5~10 年证书

✅ 3. 时间同步

timedatectl status
chronyc sources

六、总结一句话

CentOS 上 k8s 证书过期,根本原因是 Kubernetes 默认证书有效期只有 1 年,而 kubeadm 不会自动续期。

如果你愿意,可以告诉我:

  • k8s 版本
  • 单节点还是多 master
  • 是否用 kubeadm

我可以给你精确的修复步骤。

0 踩