实际之前我们记录过好几次证书更新的操作,但是往回翻看就觉得有点乱,今天就再次更新一下证书的更新步骤,同时为了后面规范写作,所以写一下影响范围,这样就能够清晰的翻看更新证书的注意事项。
默认k8s的证书是1年的有效期,根证书也就是ca证书的有效期是10年,我们一般更新的是api,etcd、scheduler和controller的证书。
1.k8s更新证书的影响
1.已运行的Pod业务通常不会中断
2.更新证书后重启相关POD会影响api-server中断,依赖api的组件会不可用,重启后恢复
3.kubectl无法提交新的业务或者资源,因为这个依赖api-server2.查看当前证书情况
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-system5.更新kubeconfig管理配置
更新证书以后也会生成新的管理配置文件,我们需要进行更换
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config6.kubelet客户端证书更换
通常kubelet客户端证书会自动轮换,我们在替换完证书,做完重启相关POD的动作以后观察节点状态,确保节点是ready的。如果没有自动轮转,我们可以参考之前的笔记:https://sulao.cn/post/956
7.更新证书注意事项
建议更新证书在集群流量较小,或者有业务空窗的时候进行,如果是多master集群,可以选择逐个控制平面进行更新。
内容版权声明:除非注明,否则皆为本站原创文章。
转载注明出处:https://sulao.cn/post/1151
相关阅读
- k8s单master集群一键安装初始化脚本
- k8s集群部署负载均衡器metallb
- k8s集群部署gpu-operator支持gpu节点自动发现和gpu上报
- k8s节点多网卡下指定某一个ip为节点INTERNAL-IP
- k8s使用SA和Secret配置私有仓库镜像拉取凭证
- k8s使用flannel作为CNI网络插件
- k8s中harbor-database-0日志报Permissions should be u=rwx (0700)的处理方法
- k8s使用helm部署harbor镜像仓库并使用nodeport方式暴露
- k8s集群部署prometheus/node-exporter/dcgm-exporter
- k8s中calico匹配多种网络接口名字的方法
评论列表