要在 Kubernetes 1.24 版本中手动更新 kubelet.conf
证书,您可以按照以下步骤进行:
在更新之前,首先检查当前 kubelet 证书的过期时间:
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -text | grep -i "Not After"
或者,如果证书存储在其他位置:
openssl x509 -in /var/lib/kubelet/pki/kubelet-client.crt -noout -text | grep -i "Not After"
在更新证书之前,先停止 kubelet 服务:
sudo systemctl stop kubelet
备份现有的证书和配置文件,以防出现问题可以恢复:
sudo cp /var/lib/kubelet/pki/kubelet-client.crt /var/lib/kubelet/pki/kubelet-client.crt.bak
sudo cp /var/lib/kubelet/pki/kubelet-client.key /var/lib/kubelet/pki/kubelet-client.key.bak
sudo cp /etc/kubernetes/kubelet.conf /etc/kubernetes/kubelet.conf.bak
删除旧的 kubelet 证书,以强制 kubelet 生成新的证书:
sudo rm /var/lib/kubelet/pki/kubelet-client.crt
sudo rm /var/lib/kubelet/pki/kubelet-client.key
如果您的证书存储在其他目录,请根据实际路径调整命令。
如果您的集群是使用 kubeadm
部署的,可以使用以下命令重新生成 kubelet 证书:
sudo kubeadm init phase kubelet-finalize all
或者,您也可以使用以下命令更新 kubelet 配置:
sudo kubeadm init phase kubeconfig kubelet
注意:在 Kubernetes 1.24 中,kubeadm certs renew
命令主要用于更新控制平面组件的证书,对于 kubelet 证书,需要使用上述命令。
为了避免将来手动更新证书,可以启用 kubelet 的证书轮换功能。
编辑 kubelet 配置文件,一般位于 /var/lib/kubelet/config.yaml
:
sudo vi /var/lib/kubelet/config.yaml
确保包含以下配置:
rotateCertificates: true
保存并退出后,重启 kubelet 服务:
sudo systemctl restart kubelet
如果您未进行上一步,或者已经完成证书更新,现在可以重启 kubelet 服务:
sudo systemctl start kubelet
再次检查 kubelet 证书的有效期,确保已更新:
openssl x509 -in /var/lib/kubelet/pki/kubelet-client.crt -noout -text | grep -i "Not After"
在主节点上,使用以下命令检查节点状态:
kubectl get nodes
确保节点显示为 Ready
状态。如果节点未就绪,可以查看 kubelet 日志以排查问题:
sudo journalctl -u kubelet -f
谨慎操作: 手动删除证书可能会导致集群中断,尤其是在生产环境中。在执行这些操作之前,务必确保已备份必要的文件,并在测试环境中验证流程。
证书签名请求(CSR): kubelet 可以向 API 服务器发送 CSR 请求,管理员可以手动批准。执行以下步骤:
1. 查看待批准的 CSR:
kubectl get csr
2. 批准 CSR:
kubectl certificate approve <csr-name>
将 <csr-name>
替换为实际的请求名称。
rotateCertificates
后,kubelet 会在证书过期前自动请求新的证书,避免手动更新。在 Kubernetes 1.24 中,手动更新 kubelet.conf
证书的步骤包括:
kubeadm
命令重新生成证书和配置。通过以上步骤,您可以成功更新 kubelet 的证书,确保集群的安全和稳定运行。