在 Kubernetes 集群中,kubeadm
提供了管理证书的功能,包括自动续签证书。以下是关于如何使用 kubeadm
自动续签证书的详细步骤:
证书自动续签机制
Kubernetes 1.15 及更高版本中,kubeadm
部署的证书默认有效期为 1 年。Kubernetes 控制平面包含一个名为 kube-controller-manager
的组件,它运行一个 certificatesigningrequests
的控制器,可以自动签发新证书。
开启自动续签
kubeadm
的证书自动续签需要在集群中启用 kubelet
的 自动轮换功能。
1. 确保启用了证书轮换
检查 kubelet
的配置文件 /var/lib/kubelet/config.yaml
,确保启用了以下选项:
serverTLSBootstrap: true
rotateCertificates: true
如果没有这两个选项,请添加它们,然后重启 kubelet
:
systemctl restart kubelet
这会启用 kubelet
定期轮换其自己的证书。
检查证书过期时间
使用以下命令查看证书的有效期:
kubeadm certs check-expiration
输出会显示所有证书的过期日期,例如:
CERTIFICATE EXPIRES RESIDUAL TIME CERTIFICATE AUTHORITY EXTERNALLY MANAGED
admin.conf Aug 17, 2025 08:47 UTC 364d ca no
apiserver Aug 17, 2025 08:47 UTC 364d ca no
...
手动续签证书
如果发现证书即将过期,可以手动触发证书续签:
如果是高可用部署的k8s集群,则需要在所有master执行
-
更新所有证书:
kubeadm certs renew all
-
仅更新某个特定证书:
比如更新 API 服务器证书:kubeadm certs renew apiserver
-
更新后重启组件:
续签证书后,需要重启 Kubernetes 控制平面组件以加载新证书:systemctl restart kubelet
常见问题
-
如何查看
kubeadm
生成的证书路径?
默认情况下,kubeadm
管理的证书存储在/etc/kubernetes/pki
。 -
kubelet 自动轮换失败怎么办?
如果kubelet
证书未自动更新,可以手动删除/var/lib/kubelet/pki
中的旧证书,重启kubelet
:rm -rf /var/lib/kubelet/pki/* systemctl restart kubelet
-
证书更新后仍提示过期?
确保所有相关服务(如kube-apiserver
、kube-controller-manager
、kube-scheduler
)已重启加载新证书。
通过以上方法,可以确保 kubeadm
管理的证书在到期前自动更新,避免集群因证书过期导致的不可用问题。