#作者:任少近
文章目录
- 查看kubelet证书
- 查看kubelet当前所使用的证书
- 更换 node上的kubelet证书
- 生成node1所需要的kubelet.conf文件
- 生成node2所需要的kubelet.conf文件
- 查看csr
- 更新 ~/.kube/config 文件
- 重启相关组件
查看kubelet证书
以上少了kubelet的证书,kubelet证书该如何查看?通过openssl x509查看证书日期
[root@k8s-master pki]#openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text |grep NotValidityNot Before: May 1 07:59:28 2024 GMTNot 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 NotNot Before: Jun 24 07:29:28 2025 GMTNot 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): (id−u):(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