kubernetes证书续签-使用kubeadm更新证书(下)

#作者:任少近

查看kubelet证书

以上少了kubelet的证书,kubelet证书该如何查看?通过openssl x509查看证书日期​

[root@k8s-master pki]#openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
        Validity
            Not Before: May 1 07:59:28 2024 GMT
            Not After 	: May 1 07:59:28 2025 GMT

以上表示过期

查看kubelet当前所使用的证书

[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
-rw-------. 1 root root 1114 Jun 24 15:34 kubelet-client-2025-06-24-15-34-28.pem
lrwxrwxrwx. 1 root root   59 Jun 24 15:34 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2025-06-24-15-34-28.pem
-rw-r--r--. 1 root root 2266 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key
这里kubelet-client-2025-06-24-15-34-28.pem是新颁发的证书。
此时kubelet-client-current.pem是软连接到kubelet-client-2025-06-24-15-34-28.pem的。
 
#通过kubeadm certs renew all更新的k8s 证数,是不会更新kubelet.conf的证书的。
#因为前面已经重新生成了kubelet.conf,现在重启kubelet。
[root@master kubernetes]# systemctl restart kubelet
 
[root@master kubernetes]# ll -a /var/lib/kubelet/pki/
在master上查看证书签名请求(简称为CSR),并批准此CSR
[root@k8s-master kubernetes]# kubectl get csr
NAME        AGE   SIGNERNAME                                    REQUESTOR                REQUESTEDDURATION   CONDITION
csr-rv2vx   23m   kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-master   <none>              Approved,Issued

#批准次CSR
[root@k8s-master kubernetes]# kubectl certificate approve csr-rv2vx (也可不需要执行此步骤)
certificatesigningrequest.certificates.k8s.io/csr-rv2vx approved 

在这里插入图片描述
查看当前kubelet证书的过期时间,这里显示过期时间到明年的2026年6月24日,已经是一年期间了,表示已成功更新证书

[root@k8s-master kubernetes]#  openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep Not
            Not Before: Jun 24 07:29:28 2025 GMT
            Not After : Jun 24 07:29:28 2026 GMT

更换 node上的kubelet证书

查看node1、node2上的kubelet证书,为老版的证书,可以看到是去年2024年6月份的证书

[root@k8s-master ansiable-book]# ansible k8s_node -m shell -a "ls -al /var/lib/kubelet/pki" -i host.yaml --limit '11.0.1.111,11.0.1.112'
11.0.1.111 | CHANGED | rc=0 >>
total 12
drwxr-xr-x. 2 root root  124 Jun 19  2024 .
drwx------. 8 root root  208 Jun 19  2024 ..
-rw-------. 1 root root 1114 Jun 19  2024 kubelet-client-2024-06-19-23-26-37.pem
lrwxrwxrwx. 1 root root   59 Jun 19  2024 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-06-19-23-26-37.pem
-rw-r--r--. 1 root root 2258 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key
11.0.1.112 | CHANGED | rc=0 >>
total 12
drwxr-xr-x. 2 root root  124 Jun 19  2024 .
drwx------. 8 root root  208 Jun 19  2024 ..
-rw-------. 1 root root 1114 Jun 19  2024 kubelet-client-2024-06-19-23-26-54.pem
lrwxrwxrwx. 1 root root   59 Jun 19  2024 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-06-19-23-26-54.pem
-rw-r--r--. 1 root root 2258 Jun 19  2024 kubelet.crt
-rw-------. 1 root root 1679 Jun 19  2024 kubelet.key

在这里插入图片描述

生成node1所需要的kubelet.conf文件

#在master创建临时node1所需要的kubelet.conf到目录
[root@k8s-master]# mkdir -p /node1
#生成k8s-node1所需要的kubelet.conf文件。注意更改成自己的信息
[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.23.17 phase kubeconfig kubelet --node-name k8s-node1 --kubeconfig-dir node1/
[kubeconfig] Writing "kubelet.conf" kubeconfig file
 
#到node1,对/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@k8s-node1 ~]# cp -a /etc/kubernetes/ /etc/kubernetes.bak20250623

到master上执行
[root@k8s-master node1]# scp kubelet.conf root@k8s-node1:/etc/kubernetes

到node1上,重启kubelet
[root@k8s-node1 kubernetes]# systemctl restart kubelet
[root@k8s-node1 kubernetes]# systemctl status kubelet

如下图,node1上的kubelet正常运行,且无任何异常信息
在这里插入图片描述

查看csr

[root@k8s-master ~]# kubectl get csr
NAME        AGE     SIGNERNAME                                    REQUESTOR                REQUESTEDDURATION   CONDITION
csr-8d7fh   11m     kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-node1    <none>              Approved,Issued
csr-rv2vx   76m     kubernetes.io/kube-apiserver-client-kubelet   system:node:k8s-master   <none>              Approved,Issued

生成node2所需要的kubelet.conf文件

#在master创建临时node2所需要的kubelet.conf到目录
[root@k8s-master]# mkdir -p /node2
#生成k8s-node2所需要的kubelet.conf文件。注意更改成自己的信息
[root@k8s-master ~]# kubeadm init --kubernetes-version=v1.23.17 phase kubeconfig kubelet --node-name k8s-node2 --kubeconfig-dir node2/
[kubeconfig] Writing "kubelet.conf" kubeconfig file
 
#到node2,对/etc/kubernetes/目录里覆盖原来的kubelet.conf。先备份原先node1的kubelet.conf文件:
[root@k8s-node2 ~]# cp -a /etc/kubernetes/ /etc/kubernetes.bak20250623

到master上执行
[root@k8s-master node2]# scp kubelet.conf root@k8s-node2:/etc/kubernetes

到node2上,重启kubelet
[root@k8s-node2 kubernetes]# systemctl restart kubelet
[root@k8s-node2 kubernetes]# systemctl status kubelet

如下图,node2上的kubelet正常运行,且无任何异常信息
在这里插入图片描述

查看csr

在这里插入图片描述
看到集群:
在这里插入图片描述
在这里插入图片描述

更新 ~/.kube/config 文件

~/.kube/config 文件充当 Kubernetes 集群的配置文件,主要用于保存集群访问的相关信息。它包含了与 Kubernetes API 服务器通信所需的各种细节,例如服务器地址、所使用的上下文(context)、认证信息(比如证书)等。通过维护这个文件,用户能够利用 kubectl 命令行工具来与 Kubernetes 集群进行有效的互动和管理。简而言之,该文件是连接和操作 Kubernetes 集群的关键凭证,确保了用户可以顺利执行各种集群管理和应用部署任务。
mv /root/.kube/config /root/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
hown ( i d − u ) : (id -u): (idu):(id -g) $HOME/.kube/config
chmod 644 $HOME/.kube/config

重启相关组件

这一步我们查看etcd已经起来了,
[root@k8s-master ~]# kubectl get pod -A |grep etcd kube-system etcd-k8s-master 1/1 Running 19 (22d ago) 2y11d [root@k8s-master ~]# kubectl -n kube-system delete pod etcd-k8s-master
[root@k8s-master ~]# kubectl get pod -A -w |grep etcd kube-system etcd-k8s-master 1/1 Running 19 (22d ago) 14s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值