k8s更新证书的步骤和影响范围

实际之前我们记录过好几次证书更新的操作,但是往回翻看就觉得有点乱,今天就再次更新一下证书的更新步骤,同时为了后面规范写作,所以写一下影响范围,这样就能够清晰的翻看更新证书的注意事项。

默认k8s的证书是1年的有效期,根证书也就是ca证书的有效期是10年,我们一般更新的是api,etcd、scheduler和controller的证书。

1.k8s更新证书的影响

1.已运行的Pod业务通常不会中断
2.更新证书后重启相关POD会影响api-server中断,依赖api的组件会不可用,重启后恢复
3.kubectl无法提交新的业务或者资源,因为这个依赖api-server

2.查看当前证书情况

kubeadm certs check-expiration

3.更新证书操作

直接使用如下命令就可以直接更新所有证书,除了根证书

sudo cp -r /etc/kubernetes /etc/kubernetes_bak
sudo kubeadm certs renew all

该命令会利用现有的CA证书,在 /etc/kubernetes/pki 目录下生成新的证书文件,有效期从更新之日起重新计算为1年。

4.重启相关POD

上述更新证书有些组件会自动重载加载新证书,而有些组件则不行,建议我们将相关的POD都进行重启,在证书未到期前可以删除POD进行重启,如果到期以后的话我们只能在管理节点使用nerdctl或者crictl删除对应的POD,删除POD对应的命令如下

kubectl get pod -A -o wide | egrep -iE "kube-apiserver|kube-controller-manager|kube-scheduler|etcd-" | grep $(hostname) | awk '{print $2}' | xargs kubectl delete pod -n kube-system

5.更新kubeconfig管理配置

更新证书以后也会生成新的管理配置文件,我们需要进行更换

sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

6.kubelet客户端证书更换

通常kubelet客户端证书会自动轮换,我们在替换完证书,做完重启相关POD的动作以后观察节点状态,确保节点是ready的。如果没有自动轮转,我们可以参考之前的笔记:https://sulao.cn/post/956

7.更新证书注意事项

建议更新证书在集群流量较小,或者有业务空窗的时候进行,如果是多master集群,可以选择逐个控制平面进行更新。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/1151

评论列表

0%