前言说明
接上一篇文章https://blog.csdn.net/margu_168/article/details/132584109
关于kubernets中的证书管理。本篇文章将单独说明一下kubelet的证书更新。在1.19.16版本中,默认情况下使用 kubeadm alpha certs renew all 不能更新kubelet的证书,其他版本请自行测试。但是某些情况下,我们需要立即对kubelet使用的证书更新,下面的方法大家可以参考一二。
更新步骤
可以先查看一下之前kubelet使用证书的过期时间
使用kubeadm方式部署的kubelet使用的证书默认放在 /var/lib/kubelet/pki
目录下
bash
[root@k8s-m1 ~]# cd /var/lib/kubelet/pki
#正常情况下,以下应该是4个文件,且时间应该是一致的
[root@k8s-m1 pki]# ll
total 16
-rw------- 1 root root 1061 Mar 6 2023 kubelet-client-2023-03-06-10-28-23.pem
-rw------- 1 root root 1061 Jan 11 19:08 kubelet-client-2024-01-11-19-08-11.pem
lrwxrwxrwx 1 root root 59 Jan 11 19:08 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-01-11-19-08-11.pem
-rw-r--r-- 1 root root 2237 Mar 6 2023 kubelet.crt
-rw------- 1 root root 1675 Mar 6 2023 kubelet.key
#从下面也可以看到过期时间是由kubelet.crt这个文件决定的,这个文件我们可以手动生成,但是方便起见我们还是让它自动生成,方法参考后续。
[root@k8s-m1 pki]# openssl x509 -in kubelet.crt -text -noout
Certificate:
Data:
Version: 3 (0x2)
Serial Number: 2 (0x2)
Signature Algorithm: sha256WithRSAEncryption
Issuer: CN=k8s-m1-ca@1678069631
Validity
Not Before: Mar 6 01:27:10 2023 GMT
Not After : Mar 5 01:27:10 2024 GMT
重新生成kubelet.conf文件
bash
[root@k8s-m1 pki]# kubeadm init --kubernetes-version=v1.19.16 phase kubeconfig kubelet --node-name k8s-m3 --kubeconfig-dir /tmp/worker/ --control-plane-endpoint 192.168.2.250
W0125 15:13:41.651740 21318 configset.go:348] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[kubeconfig] Writing "kubelet.conf" kubeconfig file
参数说明:注意指定使用的kubernets版本,相应节点name,保存kubelet.conf文件的临时位置,并且我这使用了control-plane-endpoint这个参数来指明集群使用的vip地址。
(更多参数可以通过-h 查看,--control-plane-endpoint是用于指定apiserver的vip地址)
拷贝配置文件到实际使用目录,实际使用中最好先备份
bash
[root@k8s-m1 pki]# cp /tmp/worker/kubelet.conf /etc/kubernetes/
cp: overwrite '/etc/kubernetes/kubelet.conf'? y
删除/var/lib/kubelet/pki 目录下的所有文件
bash
[root@k8s-m1 pki]# rm -rf /var/lib/kubelet/pki
重启kubelet,等待目录/var/lib/kubelet/pki下的文件生成即可
bash
[root@k8s-m1 pki]# systemctl restart kubelet
检查
查看kubelet状态,并查看对应的证书文件是否正常生成,注意证书生成需要一点时间,可以稍等一下进行查看。貌似需要切换一下目录再进来查看。其实这个证书文件时根据先前我们重新生成kubelet.conf文件生成的。
bash
[root@k8s-m1 pki]# systemctl status kubelet
● kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Drop-In: /usr/lib/systemd/system/kubelet.service.d
└─10-kubeadm.conf
Active: active (running) since Thu 2024-01-25 15:15:27 CST; 22s ago
Docs: https://kubernetes.io/docs/
Main PID: 24420 (kubelet)
Tasks: 26
Memory: 37.8M
CGroup: /system.slice/kubelet.service
└─24420 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/conf...
^C
[root@k8s-m1 pki]# ll
total 12
-rw------- 1 root root 1061 Jan 25 15:14 kubelet-client-2024-01-25-15-14-33.pem
lrwxrwxrwx 1 root root 59 Jan 25 15:14 kubelet-client-current.pem -> /var/lib/kubelet/pki/kubelet-client-2024-01-25-15-14-33.pem
-rw-r--r-- 1 root root 2237 Jan 25 15:14 kubelet.crt
-rw------- 1 root root 1675 Jan 25 15:14 kubelet.key
[root@k8s-m1 pki]#
以上就是kubelet证书单独更新的过程,大家可以参考。
更多关于kubernetes的知识分享,请前往博客主页。编写过程中,难免出现差错,敬请指出