kubeadm更新证书,基于k8s 1.24.2版本

k8s 1.24.2版本 证书更新 kubeadm方式

#查看证书有效期
kubeadm certs check-expiration

在这里插入图片描述


#更新所有证书

kubeadm certs renew all  

#也可以指定更新指定证书
#但是kubeadm不能更新kubelet证书

在这里插入图片描述

证书更新完后重启对应组件
kubectl delete pod etcd-master -n kube-system
kubectl delete pod kube-apiserver-master -n kube-system
kubectl delete pod kube-controller-manager-master -n kube-system
kubectl delete pod kube-scheduler-master -n kube-system

修改config文件
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

kubelet证书在/var/lib/kubelet/pki下,一般由bootstrap滚动更新。但是会存在关闭rotation证书轮换后,不能自动更新的情况,需要手动更新。

手动更新kubelet证书

手动更新方法:

1. kubeadm init phase kubeconfig kubelet --node-name node2 --kubeconfig-dir /tmp/      生成配置文件
2. 修改配置文件中dns地址
3. 备份node节点/etc/kubenetes/kubelet.conf文件 和 /var/lib/kubelet/pki证书目录
4. scp新kubelet.conf文件到node节点/etc/kubenetes/目录
5. 重启node节点kubelet

官方文档

Kubelet client certificate rotation fails
By default, kubeadm configures a kubelet with automatic rotation of client certificates by using the /var/lib/kubelet/pki/kubelet-client-current.pem symlink specified in /etc/kubernetes/kubelet.conf. If this rotation process fails you might see errors such as x509: certificate has expired or is not yet valid in kube-apiserver logs. To fix the issue you must follow these steps:

Backup and delete /etc/kubernetes/kubelet.conf and /var/lib/kubelet/pki/kubelet-client* from the failed node.

From a working control plane node in the cluster that has /etc/kubernetes/pki/ca.key execute kubeadm kubeconfig user --org system:nodes --client-name system:node:$NODE > kubelet.conf. $NODE must be set to the name of the existing failed node in the cluster. Modify the resulted kubelet.conf manually to adjust the cluster name and server endpoint, or pass kubeconfig user --config (it accepts InitConfiguration). If your cluster does not have the ca.key you must sign the embedded certificates in the kubelet.conf externally.

Copy this resulted kubelet.conf to /etc/kubernetes/kubelet.conf on the failed node.

Restart the kubelet (systemctl restart kubelet) on the failed node and wait for /var/lib/kubelet/pki/kubelet-client-current.pem to be recreated.

Manually edit the kubelet.conf to point to the rotated kubelet client certificates, by replacing client-certificate-data and client-key-data with:

client-certificate: /var/lib/kubelet/pki/kubelet-client-current.pem
client-key: /var/lib/kubelet/pki/kubelet-client-current.pem
Restart the kubelet.

Make sure the node becomes Ready.

请注意

官方文中kubeadm kubeconfig user命令需要指定kubeadm-config文件。可以生成默认配置文件后修改

kubeadm config print init-defaults > init-defaults.yaml
kubeadm kubeconfig user --org system:nodes --client-name system:node:node2 --config=init-defaults.yaml > kubelet.conf

所以用 kubeadm init phase kubeconfig kubelet --node-name node2 --kubeconfig-dir /tmp/ 直接生成kubelet配置文件的方式更简便

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值