«

全网最全,K8S证书过期后如何延长CA及组件证书至100年

时间:2025-2-19 11:40     作者:Anglei     分类: 虚拟化


在 Kubernetes 中,证书过期可能会导致 API 服务器、kubectl 和其他组件无法正常工作。更新过期的证书通常涉及以下几个步骤:

查看证书状态

首先让我们看看证书的路径:

然后使用 OpenSSL 命令检查特定证书:

kubeadm certs check-expiration
或者
openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver-etcd-client.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/apiserver-kubelet-client.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/front-proxy-ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/front-proxy-client.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/etcd/ca.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/etcd/healthcheck-client.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/etcd/peer.crt -noout -text  |grep Not
openssl x509 -in /etc/kubernetes/pki/etcd/server.crt -noout -text  |grep Not

延长证书到100年

要延长Kubernetes集群的CA证书有效期至100年,需手动生成新CA并重新签发所有组件证书。以下是详细步骤:

步骤1:备份现有证书

cp -r /etc/kubernetes/pki /etc/kubernetes/pki.backup

步骤2:生成新的CA证书(有效期为100年)

openssl req -x509 -new -nodes -newkey rsa:2048 -keyout /etc/kubernetes/pki/ca.key -out /etc/kubernetes/pki/ca.crt -subj "/CN=kubernetes-ca" -days 36500

步骤3:重新生成所有组件证书

使用新CA重新签发API Server、etcd等证书:

示例:重新生成API Server证书

openssl genrsa -out /etc/kubernetes/pki/apiserver.key 2048
openssl req -new -key /etc/kubernetes/pki/apiserver.key -out /etc/kubernetes/pki/apiserver.csr -subj "/CN=kube-apiserver"
openssl x509 -req -in /etc/kubernetes/pki/apiserver.csr -CA /etc/kubernetes/pki/ca.crt -CAkey /etc/kubernetes/pki/ca.key -CAcreateserial -out /etc/kubernetes/pki/apiserver.crt -days 36500

重复此过程为其他组件生成证书(如etcd、front-proxy等)。

步骤4:更新kubeconfig文件

更新管理员kubeconfig以使用新CA:

kubectl config set-cluster kubernetes --certificate-authority=/etc/kubernetes/pki/ca.crt --embed-certs=true --server=https://<API-SERVER-IP>:6443

步骤5:重启控制平面组件

重启API Server、Controller Manager、Scheduler等组件:

# 对于kube-apiserver(若以静态Pod运行)
mv /etc/kubernetes/manifests/kube-apiserver.yaml /tmp/
sleep 20
mv /tmp/kube-apiserver.yaml /etc/kubernetes/manifests/

重复此步骤重启其他组件。

步骤6:更新节点证书

在每个节点上更新kubelet证书:

systemctl restart kubelet

步骤7:验证

检查证书有效期及集群状态:

openssl x509 -in /etc/kubernetes/pki/ca.crt -noout -dates
crictl ps
kubectl get nodes

以上这么繁杂的步骤,为什么不在创建K8S时候就把日期写成100年呢?

打开kubeadm.yaml

以上配置完后,在创建K8S时,CA证书已经改为了100年。

然后再配合组件证书延期100年的脚本,所有的证书都更改完了

PS:

在 Kubernetes 中,验证 super-admin.conf 证书文件是否启用自动续期,需检查 kubelet 的配置参数。执行以下命令查看 kubelet 配置:

cat /var/lib/kubelet/config.yaml | grep -E 'serverTLSBootstrap|rotateCertificates'

若输出包含以下两项且值为 true,则说明启用了自动签发:

serverTLSBootstrap: true
rotateCertificates: true

若未启用,需手动添加并重启 kubelet 服务:

systemctl restart kubelet

‌super-admin.conf 文件引用的客户端证书是否自动续期,取决于 kubelet 的证书轮换配置‌。自动续期通常由 kubelet 自身管理,而非通过 kubeadm 直接控制。

100年的组件证书更新shell脚本如下:

注意事项

完成以上步骤后,CA证书及组件证书将被更新为100年有效期。务必谨慎操作,确保备份并验证各步骤正确性。

本文完结,相关标签: k8s 证书 延期

 版权所有:Anglei
 文章标题:全网最全,K8S证书过期后如何延长CA及组件证书至100年
 除非注明,本站文章如未特殊说明均为 MAXADA社区知识库 原创,且版权所有,请勿用于任何商业用途。

推荐阅读:

看完后感想如何?

路过(0)

雷人(0)

握手(3)

鲜花(1)

鸡蛋(0)
分享到: