Kuberbetes-CA证书过期解决方案
K8s 集群(kubeadm) CA 证书过期解决方案
- 一.查看证书有效期信息
- 二.解决方法
- 1.备份原有证书和配置文件
- 2.更新证书
- 3.重启pod
- 4.更新kubecofig文件
- 5.查看证书过期时间
- 6.重启工作节点kubelet
- 7.验证集群状态
当使用 kubeadm 安装的 Kubernetes 集群证书过期时,可以通过以下步骤更新证书。
一.查看证书有效期信息
# 查看证书过期时间 => k8s1.15+版本的查看方法
kubeadm certs check-expiration
字段说明
字段 | 解释 |
---|---|
CERTIFICATE | 证书的名称 |
EXPIRES | 证书过期的时间点 |
RESIDUAL TIME | 当前时间距离证书过期的剩余时间 |
CERTIFICATE AUTHORITY | 证书的颁发机构 |
EXTERNALLY MANAGED | 证书是否由外部系统管理 |
证书字段详解
CERTIFICATE | EXPIRES | RESIDUAL TIME | CERTIFICATE AUTHORITY | EXTERNALLY MANAGED | 备注 |
---|---|---|---|---|---|
admin.conf | Aug 02, 2025 08:36 UTC | 79d | ca | no | Kubeconfig 文件,包含集群访问的配置 |
apiserver | Aug 02, 2025 08:36 UTC | 79d | ca | no | Kubernetes API 服务器的证书 |
apiserver-etcd-client | Aug 02, 2025 08:36 UTC | 79d | etcd-ca | no | API 服务器与 ETCD 之间的客户端证书 |
apiserver-kubelet-client | Aug 02, 2025 08:36 UTC | 79d | ca | no | API 服务器与 Kubelet 之间的客户端证书 |
controller-manager.conf | Aug 02, 2025 08:36 UTC | 79d | ca | no | Kubernetes 控制器管理器的 Kubeconfig 文件 |
etcd-healthcheck-client | Aug 02, 2025 08:36 UTC | 79d | etcd-ca | no | 用于 ETCD 健康检查的客户端证书 |
etcd-peer | Aug 02, 2025 08:36 UTC | 79d | etcd-ca | no | ETCD 节点间的对等通信证书 |
etcd-server | Aug 02, 2025 08:36 UTC | 79d | etcd-ca | no | ETCD 服务器的证书 |
front-proxy-client | Aug 02, 2025 08:36 UTC | 79d | front-proxy-ca | no | 前端代理的客户端证书 |
scheduler.conf | Aug 02, 2025 08:36 UTC | 79d | ca | no | Kubernetes 调度器的 Kubeconfig 文件 |
显示证书过期还有79天
证书颁发机构字段详解
CERTIFICATE AUTHORITY | EXPIRES | RESIDUAL TIME | EXTERNALLY MANAGED | 备注 |
---|---|---|---|---|
ca | Jul 31, 2034 08:36 UTC | 9y | no | Kubernetes 的主证书颁发机构 |
etcd-ca | Jul 31, 2034 08:36 UTC | 9y | no | ETCD 的证书颁发机构 |
front-proxy-ca | Jul 31, 2034 08:36 UTC | 9y | no | 前端代理的证书颁发机构 |
二.解决方法
1.备份原有证书和配置文件
# 备份整个 /etc/kubernetes 目录
sudo cp -r /etc/kubernetes /etc/kubernetes.bak# 备份 kubeconfig 文件
sudo cp $HOME/.kube/config $HOME/.kube/config.bak
2.更新证书
# 使用 kubeadm 自动更新所有证书
sudo kubeadm certs renew all
根据提示,需要重启kube-apiserver,kube-controller-manager,kube-scheduler 和etcd组件,因此还需再进行重启操作
3.重启pod
# 查看这些pod
kubectl get pod -n kube-system
# 删除这些pod
kubectl delete pod -n kube-system etcd-k8s-master kube-apiserver-k8s-master kube-controller-manager-k8s-master kube-scheduler-k8s-master
4.更新kubecofig文件
# 重新生成管理员 kubeconfig
sudo kubeadm init phase kubeconfig admin# 替换原有配置(需备份原文件)
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
5.查看证书过期时间
# 确认证书已更新
sudo kubeadm certs check-expiration
6.重启工作节点kubelet
systemctl restart kubelet
systemctl status kubelet
7.验证集群状态
kubectl get nodes