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

浙公网安备 33010602011771号