k8s证书升级

k8s证书升级

开发环境K8S证书过期了,如何快速升级?

备份旧信息

因为开发环境k8s使用kubesphere,其证书路径由/etc/kubernetes/pki 换成了/etc/kubernetes/ssl, 而kubeadm只识别/etc/kubernetes/pki

1、备份/etc/kubernetes, /etc/kubernetes_bak
2、cp -r /etc/kubernetes/ssl /etc/kubernetes/pki

重新生成证书

#下面命令会在/etc/kubernetes/pki目录生成新文件,
kubeadm init phase certs all 
#有时候因为网络变更,导致证书校验ip失败,需要指定ip
kubeadm init phase certs all --apiserver-advertise-address 10.233.0.1 --apiserver-cert-extra-sans 192.168.1.71

#更新证书;
kubeadm alpha certs renew all

#删除/etc/kubernetes路径下*.conf文件移除,防止重新生成无法覆盖
rm -rf /etc/kubernets/*.conf

#该操作生成了admin.conf,kubelet.conf 等等新的的配置
kubeadm init phase kubeconfig all

多个master的情况下,需要把pki拷贝过去做同样操作

/etc/kubernetes/目录复制到其他master中,但需要重启master相关服务;

把证书覆盖回去

# 因为服务使用的是ssl这个文件路径,所以要覆盖回去;
cp -r /etc/kubernetes/pki /etc/kubernetes/ssl

服务重启

重启重启kube-apiserver,kube-controller,kube-scheduler,etcd这4个容器即可,node节点不用更新证书,他使用的是ca.crt,这个是不变的,我们是基于这个旧ca.crt生成了新证书,命令如下:

docker ps | grep -v pause | grep -E "etcd|scheduler|controller|apiserver" | awk '{print $1}' | xargs docker restart

重启kubelet服务:

systemctl restart kubelet && journalctl -xefu kubelet

配置kubectl客户端

cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
运行以上命令就可以使用客户端了

注意事项

  • 重启etcd

因为开发环境k8s组件etcd是分配在三个节点上,master,node1,node2,所以要在每个节点上重启etcd,不然无法生效

  • 更新kubeconfig

复制 $HOME/.kube/config 然后

参考文档

http://www.5bug.wang/post/113.html

问题记录

1、x509: certificate is valid for 10.96.0.1, 192.168.1.71, not 10.233.0.1

原因分析:

ssl 缺失证书 -> master因为资源问题重启了关键性组件 -> k8s集群无法使用

处理:

1、增加master节点内存资源

2、重新授权证书,因flannel分配网络问题,需指定授权证书包含的ip

具体报错:

证书申请操作命令:

kubeadm init phase certs all --apiserver-advertise-address 10.233.0.1 --apiserver-cert-extra-sans 192.168.1.71
posted @ 2021-03-11 15:37  网络迷途者  阅读(539)  评论(0)    收藏  举报